bdist_wheel predates marker support in setuptools and didn't support
pulling markers from setup.py until 0.24.0, as noted in the wheel release
notes. Older versions of bdist_wheel could read conditional requirements
from a section in setup.cfg but could not translate markers from
setuptools' requires.txt. Wheel's own source code demonstrates the syntax.

pip uses pkg_resources to parse dependencies for wheels and an old enough
pip doesn't use wheels at all.

On Wed, Oct 28, 2015 at 1:15 PM Marius Gedminas <mar...@gedmin.as> wrote:

> Hi!
>
> pip 7 enables wheel caching by default, which is good.
>
> Wheel caching means you can't compute dynamic dependencies any more --
> i.e. things like
>
>   setup(
>     ...
>     install_requires=[...] + (['enum34'] if sys.version_info[0] < 3 else
> []),
>     ...)
>
> will cause problems.
>
> As far as I understand, you're supposed to use environment markers
> instead.
>
>
> Problem 1: where's the documentation?  E.g.
> https://python-packaging-user-guide.readthedocs.org/en/latest/distributing/
> has no mention of the word "marker".
>
> Try to google "setuptools environment marker" (and how is a user going
> to discover the magical keyword they need to google is "environment
> marker")?  Try to find anything resembling documentation on the 1st
> page.  The best I could find was
> http://docs.openstack.org/developer/pbr/#environment-markers which only
> works if you use pbr.
>
> Even the spec (
> https://www.python.org/dev/peps/pep-0426/#environment-markers)
> only shows how the markers are supposed to appear in the JSON metadata.
> No clue is provided for poor writers of setup.py files.
>
> I somehow discovered the syntax once (I don't remember how -- most
> likely kind people in #pypa spoon-fed me), but now I'm cargo-culting my
> existing setup.py files that already use environment markers.
>
>
> Problem 2: what are the minimum versions of the tools that your users
> must have before you can rely on environment markers?
>
> - setuptools >= 0.7 ("Added experimental environment marker support")
>
> - wheel >= 0.24 (if you have wheel 0.23 or older, environment markers are
>   silently broken and have fun figuring out why:
>   https://github.com/pypa/pip/issues/2870).
>
> - does the pip version matter at all?  I think not; please correct me if
>   I'm wrong.
>
>
> Some official answers from the hard-working PyPA visionaries would be
> welcome.
>
> Marius Gedminas
> --
> I once held a little hand
> That made my sad heart sing.
> Twas the loveliest hand I'd ever held,
> Four Aces and a King
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG@python.org
> https://mail.python.org/mailman/listinfo/distutils-sig
>
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to