-
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
pip 6.0 installs in reverse order, as compared to 1.5 #2260
Comments
Note that |
We purposely switched the order. The new order installs dependent packages first which means that you won't get a top level dependency installed and then have one of it's dependencies fail to install and leave your system in a state where you have to uninstall and then reinstall the top level. |
Apparently not, cov-core depends on coverage. So there is something wrong here... |
Oh, actually I didn't read the command very closely. The reason the order is reversed is because you specified them both on the CLI. That tells pip that they are both top level dependencies. The behavior is correct if you just install cov-core: 1.5.6
6.0.1
You can tell from this that previously pip would install cov-core first, and then coverage, and now it installs coverage first and then cov-core. |
I'm going to close this, as the new behavior is what we wanted. It means that when running |
In summary, If I specify two dependant packages in the order that pip would have installed I don't see that as a reasonable state of things. Also please note that I do need to specify both packages, since I'm I propose two patches:
--phone is hard.
|
+1 |
There is no reason to install packages given as an input to pip in the reverse order. This is not natural and clearly regression from previous, natural behavior. Please note that this is orthogonal to the change which introduced installation of dependencies first, which is positive. This bug should be reopened and fixed.
I wouldn't involve this here. Firstly, it's not required in order to fix the regression which is installation of input packages in reverse order. Secondly, this is territory of dependency resolution which pip can't do - see #988 |
On its own, this is a fix for a regression vs master, as it passes tests. It is needed for topological handling, as we need to build a dependency graph, and can't do that without resolving unnamed -> named dependencies before adding the depended-on requirements.
On its own, this is a fix for a regression vs master, as it passes tests. It is needed for topological handling, as we need to build a dependency graph, and can't do that without resolving unnamed -> named dependencies before adding the depended-on requirements.
I have a use case where two forked packages need to be installed in a particular order or else they throw an error. pip1.5 would install requirements in the order they were given on the commandline, or in a requirements file. pip6 seems to install in exactly the opposite order (last to first on commandline or requirements file).
Under pip1.5, note that coverage is installed before cov-core: (Sorry the example is a bit contrived, but this really did bite me.)
Same command under pip6 installs the two packages in opposite order, and crashes:
If I reverse the arguments under pip1.6, the packages are listed in that order, but again installed in reversed (double-revered, ie correct) order:
In summary, I can craft a command that will work under 1.5 or 6, but not both, in the currrent state of things.
The text was updated successfully, but these errors were encountered: