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

Run setup.py install if setup.py egg_info is not supported #2409

Closed
techtonik opened this issue Feb 8, 2015 · 6 comments
Closed

Run setup.py install if setup.py egg_info is not supported #2409

techtonik opened this issue Feb 8, 2015 · 6 comments
Labels
auto-locked Outdated issues that have been locked by automation

Comments

@techtonik
Copy link
Contributor

Issue #25 (closed) still contains many comments, as well as question about invalid command egg_info is top 16th about pip on StackOverflow. https://stackoverflow.com/questions/tagged/pip

I'd like to return to suggestion by @vbabiy to download each package and then instead of running egg_info, running install, but add correction to fallback to install only if egg_info is invalid command. Are there any objections?

@pfmoore
Copy link
Member

pfmoore commented Feb 8, 2015

This was already rejected under issue #25. From that issue, "pip ensures that all dependencies can be found, unpacked, and have working setup.py before it installs any of them" and to do that we need to successfully run egg_info.

Your suggestion of a fallback doesn't help, because if we do fall back, we won't install dependencies, which is not acceptable (as it leaves the user with a broken system).

Closing as a duplicate of #25.

@pfmoore pfmoore closed this as completed Feb 8, 2015
@techtonik
Copy link
Contributor Author

@pfmoore, if the package doesn't support egg_info, it doesn't support dependencies. Why do you insist that it has them? It is a job of package maintainer to add them, not a job of pip to decide that all packages should have at least one dependency.

@dstufft
Copy link
Member

dstufft commented Feb 8, 2015

We don't meaningfully support anything more than distutils or setuptools currently. Attempting to shoe horn other things into the setup.py script at this point in the game is just going to make things harder and more confusing. Long term the way is with static metadata.

@pfmoore
Copy link
Member

pfmoore commented Feb 8, 2015

As @dstufft says, we support setuptools and distutils at the moment, and we specifically only support dependency resolution via the established mechanisms in those packages.

The issue in #25 was that scipy needed numpy installed in order for its setup.py to run (I don't know if that's still the case). At the moment, neither setuptools nor distutils provide a means to express that dependency so that pip can use it. So that scenario is not supported. End of story.

Future metadata and distribution format standards (Metadata 2.0 and Sdist 2.0) will include means to express such dependencies and pip will be updated to support those means.

In the meantime, we're not going to accept requests for stopgap solutions. It's not as if this is a critical issue anyway. Just manually handle the dependency by running pip install numpy before you run pip install scipy. The scipy docs can make this clear, if they need to.

@techtonik
Copy link
Contributor Author

@pfmoore please note that although this issue mentions issue #25, it is not about scipy and numpy from that issue, and it is not about dependency resolution either.

@techtonik
Copy link
Contributor Author

@dstufft it looks like pip supports only setuptools if it insists that every package should mention its dependencies (which distutils doesn't support IIUC),

@lock lock bot added the auto-locked Outdated issues that have been locked by automation label Jun 5, 2019
@lock lock bot locked as resolved and limited conversation to collaborators Jun 5, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
auto-locked Outdated issues that have been locked by automation
Projects
None yet
Development

No branches or pull requests

3 participants