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.txthave an implicit contract to makewheelavailable 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 wheelfor setup and a straightpip install -r requirements.txtwon't work?
Even better if somebody can explain whether this answer is changing with PEP 518 and the deprecation of setup_requires :S
 
    