title: How and who should specify wheel as a Python package dependency?
body: <p>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 <a href="https://github.com/aws/sagemaker-tensorflow-serving-container" rel="nofollow noreferrer">TensorFlow serving container</a> - running Python 3.5).</p>
  
  <p>One of my dependencies is <code>matplotlib</code>, which in turn needs <code>kiwisolver</code>, which has C++ components.</p>
  
  <p>It seems like my target container doesn't have <code>wheel</code> installed by default, because when I supply just a <code>requirements.txt</code> file I get the error described in <a href="https://stackoverflow.com/questions/34819221/why-is-python-setup-py-saying-invalid-command-bdist-wheel-on-travis-ci">"Why is python setup.py saying invalid command 'bdist_wheel' on Travis CI?"</a>.</p>
  
  <p>I think I got it working by supplying a <code>setup.py</code> instead, with <code>setup_requires=["wheel"]</code> as advised in the <a href="https://stackoverflow.com/a/54833684">answers</a> to that Travis CI question.</p>
  
  <p>My Python packaging-fu is weak, so my question is: Who <strong>should</strong> be specifying this dependency, because it seems like it shouldn't be me?</p>
  
  <ul>
  <li>Should kiwisolver be advertising that it needs <code>wheel</code>?</li>
  <li>Does a framework application/environment installing user code modules via <code>requirements.txt</code> have an implicit contract to make <code>wheel</code> available in the environment, for some reason in Python's packaging ethos?</li>
  <li>Maybe it really is on me to know that, since I'm indirectly consuming a module like kiwisolver, my package requires <code>wheel</code> for setup and a straight <code>pip install -r requirements.txt</code> won't work?</li>
  </ul>
  
  <p>Even better if somebody can explain whether this answer is changing with <a href="https://www.python.org/dev/peps/pep-0518/" rel="nofollow noreferrer">PEP 518</a> and the deprecation of <code>setup_requires</code> :S</p>