I'm writing a source bundle (not a fully packaged module, but some scripts with dependencies) to be installed and executed inside a framework application (Specifically, Amazon SageMaker's TensorFlow serving container - running Python 3.5).
One of my dependencies is matplotlib
, which in turn needs kiwisolver
, which has C++ components.
It seems like my target container doesn't have wheel
installed by default, because when I supply just a requirements.txt
file I get the error described in "Why is python setup.py saying invalid command 'bdist_wheel' on Travis CI?".
I think I got it working by supplying a setup.py
instead, with setup_requires=["wheel"]
as advised in the answers to that Travis CI question.
My Python packaging-fu is weak, so my question is: Who should be specifying this dependency, because it seems like it shouldn't be me?
- Should kiwisolver be advertising that it needs
wheel
? - Does a framework application/environment installing user code modules via
requirements.txt
have an implicit contract to makewheel
available in the environment, for some reason in Python's packaging ethos? - Maybe it really is on me to know that, since I'm indirectly consuming a module like kiwisolver, my package requires
wheel
for setup and a straightpip install -r requirements.txt
won't work?
Even better if somebody can explain whether this answer is changing with PEP 518 and the deprecation of setup_requires
:S