-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Remove implicit setuptools dependency #7616
Comments
This feature could be rolled out incrementally, first as an opt-in feature, through a command-line arg / environment var, that would address the concern from my perspective and early-adopters could elect to beta-test the behavior. Then, it could be the default with an opt-out feature, and then ultimately it could be the default behavior. Once this behavior is the default, it should substantially simplify the code, eliminating the current code path where |
That's essentially what the
... and quite possibly others. I don't know what would constitute a reasonable transition plan for moving to Note: Your proposal might not be identical to Note 2: If you prefer PEP 517 behaviour by default, you can set |
Oh, wow. I think I might have heard about |
Works like a charm:
|
What's the problem this feature will solve?
Currently, pip has an implicit dependency on setuptools to build legacy packages (pre PEP 517). Removing setuptools from a build environment will cause builds of these packages or install of these packages from source to fail.
For example:
This issue is often masked by the fact that pip will cache the wheel, so if the wheel was built with one environment, it might succeed in the next without setuptools due to the cache, leading to situations where the same code will run successfully in some CI environments (with cache support) but fail in others.
I encountered this issue in setuptools test suite itself, as I'm attempting to install
pytest-virtualenv
which depends transitively ontermcolor
, and would like to be able to install those test requirements without the need for an implicit setuptools.Describe the solution you'd like
Why can't pip, for legacy projects, supply an implied 'pyproject.toml':
This would effectively build the project using those dependencies (if not already met), and would allow for old, unmaintained projects like termcolor to be installed in environments with only pip.
As an illustration:
Alternative Solutions
The alternative is that every environment needs one of:
The text was updated successfully, but these errors were encountered: