-
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
downloads 50 different versions of setuptools
and eventually fails with a cryptic syntax error
#9256
Comments
So this specific issue will almost certainly be fixed by this: #9249 But I would like to point out to the pip maintainers that this highlights a key problem the resolver strategy, which has already been discussed a few times but I honestly I believe will increasingly flood this GitHub's issue page so I want to reiterate:
|
I found the fact that it actually goes and starts downloading older packages instead of having that metadata available in PyPi kind of concerning, although perhaps it's making the best of a bad situation. |
Agreed. The problem is that it's not practical to know what counts as "old enough". Some stable packages haven't been updated in quite a time. (Maybe not as far back as 2013, but 🤷)
That might be something we could do. Again, the problem is knowing when we're looking at something "old enough" to switch to that option.
Precisely that. We're working on encouraging packages not to calculate metadata at build time, and once we have that we can look at exposing that metadata on PyPI, but it's been a multi-year project so far, so it's not going to happen soon 🙁 |
Totally understand this is basically an undefinable and as a fellow coder I'm very sympathetic to undefinable requirements. But this is the strategy pip has decided to take so from my naive point of view with no appreciation of complexity of implementation it seems to me if the issues is common enough that pip will continue to receive more and more reports then some arbitrary decisions might have to taken (max depth parameter?) or a change of strategy (BFS instead of DFS?).
I find it truly miraculous that pip is able to run arbitrary code from so many of package versions (10'000s, 100'000s, millions?) and not have these errors far more frequently. So maybe I'm wrong here and each package-version should be yanked or fixed with constraints. But taking this issue as example, let's say pip doesn't find a way to fail fast and no heuristic is implemented to give up before a certain depth or age of package, as is the case of the time of reporting. Then what is the right course of action?
To me it feels like either of these solutions aren't ideal. To me it feels that it's something pip must attempt to solve to some extent (generically catching errors / finding new ways to fail fast / heuristics to fail early). But maybe I'm over-blowing what is a niche issue, I'm again surprised this isn't far more common. |
Duplicate to #9246 and #9187 (comment) |
What did you want to do?
On Ubuntu 16.04, and Python 3.5.2, I created a python3 virtualenv and ran this command:
Output
The install downloads 50 different versions of
setuptools
and eventually fails with a cryptic syntax error:piplog.txt
Additional information
It turns out the
toil
package doesn't actually support Python 3.5. With the legacy resolver, it figures that out:I would expect the new resolver to fast-fail the same way the legacy resolver did.
The text was updated successfully, but these errors were encountered: