Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix environment markers handling #1081

merged 1 commit into from Jul 14, 2017


Copy link

@benoit-pierre benoit-pierre commented Jul 10, 2017

While the documentation now points to using environment markers with install_requires for declaring platform dependencies, this result in invalid wheels because those are stripped from the final requirements in the embedded metadata.

E.g, using something like this:

from setuptools import setup
    install_requires='barbazquux; "foobar" in sys_platform',

result in foo.egg-info/requires.txt containing:

barbazquux; "foobar" in sys_platform

instead of:

import sys

from setuptools import setup

    extras_require={':"foobar" in sys_platform': 'barbazquux'},

which yields:

[:"foobar" in sys_platform]

This PR automatically move requirements in install_requires that use environment markers to extras_require so the egg info is valid and the generated wheels work as expected.

Additionally, I added a check to error out if an extras_require requirement is itself using an environment marker, as it's not supported.

Note: first commit is a fix for the same issue as #1063, so I'll rebase once this is merged.

@benoit-pierre benoit-pierre force-pushed the fix_environment_markers_handling branch from e3692a5 to 050808d Compare July 13, 2017 19:27
Copy link
Member Author

Rebased on master.

@jaraco jaraco merged commit 3e76534 into pypa:master Jul 14, 2017
@benoit-pierre benoit-pierre deleted the fix_environment_markers_handling branch July 14, 2017 00:57
jaraco added a commit that referenced this pull request Jul 14, 2017
suutari-ai pushed a commit to suutari/prequ that referenced this pull request Aug 2, 2017
If the wheel is generated with older setuptools it will have incorrect
requirements for Python 3, since some of the requirements use
environment markers and there was a problem with those in older versions
of the setuptools.

See pypa/setuptools#1081 and
pypa/setuptools#1108 for details.
stephenfin added a commit to stephenfin/setuptools that referenced this pull request Mar 26, 2018
This ensures we don't unknowingly change the behavior of this again.

Signed-off-by: Stephen Finucane <>
Fixes: pypa#1307
pganssle added a commit that referenced this pull request Mar 26, 2018
@di di mentioned this pull request Sep 25, 2018
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

Successfully merging this pull request may close these issues.

None yet

2 participants