Created by: danielballan
Hi Mike,
I just got back from SciPy 2014 in Austin, where a major theme was the python "build problem," the difficulty of installing packages with non-Python dependencies. Software developers from Microsoft, Enthought, and ContinuumIO were there all week helping us make progress. I spent the last two days in a room with people writing reliable recipes for building difficult packages. The community is generally rallying around conda's build recipes and binary installers, in conjunction with binstar, as a solution. (Hashdist is also doing good work in this area.) I'd like to be able to conda install ffmpeg
and conda install av
on all three platforms. (I'm not a Windows user, but a lot of my scientific collaborators are.)
There were also many people doing imaging work -- the scikit-image lead devs were there -- and I promoted PyAV as the far-and-away best solution for getting video into Python. Scikit-image recently dropped their support for video because OpenCV is so problematic. I'd like to see scikit-image adopt PyAV as a dependency. Your approach is the right the one, and no one else has put in the work to do this right.
To get wider adoption, I think PyAV needs a more standard setup.py
. This is my attempt to simplify it. Some notes:
- I am working off of v0.1 for simplicity. I can rebase on your
master
later. - Did
pip install av
ever actually work? It has never worked for me. It seems likemake
was required. My revisedsetup.py
does not need theMakefile
. I'm envisioning that you might keepMakefile
for all its testing capabilities, but that a basic install would never touch it. - If the build encounters a problem like a missing library, I think it should raise informatively, not just print a message and continue. It was confusing to have builds finish "successfully" only to error on import because, say,
_core.so
wasn't built. - This draft of a simpler
setup.py
does not handlePYAV_HAVE...
headers. I'll need to add that, I know.
Sorry for the long-winded message. Are you receptive to this kind of change? I'm no build expert, but I think there is enough interest and support in the community to work toward a reliable cross-platform build.