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-compile
fails to resolve dependency versions, even though solution exists
#1372
Comments
pip-compile
fails resolve dependency versions, even though solution existspip-compile
fails to resolve dependency versions, even though solution exists
Hello @tmarice, Thanks for the report. That's because |
@atugushev was it a design choice (not having a proper resolver) since it's faster and fails only in few cases, or you'd accept/consider a PR for example using resolvelib or another proper resolver? |
@dieggoluis I think nobody here opposes having resolvelib integrated. I suggested it in some threads too. But it'd take some effort to get it done. I have experience integrating resolvelib but I've never gotten to explore what it'd take to get it pulled into pip-tools. If you're willing to start working on a PR, I'll try to find some time to review it. Not sure if there's anybody else here who's actually worked with resolvelib directly in the past but if there is, it'd be useful to track them down and ask for reviews too. |
I have a prototype atugushev#10. Implemented the new resolver using |
I'd still prefer resolvelib tho |
@webknjaz May I ask you why you'd prefer At Data Theorem, we are experimenting We think that it would make more sense that If we can provide any help for the implementation or the review, we would be happy to contribute. Thanks! |
@FlorentJeannot @atugushev I'd start working on it this weekend in my spare time, but if you are almost done with it I'll let you finish the job :) I'd be happy to help reviewing it |
@FlorentJeannot As Diego mentioned, resolvelib is pip's resolver (it used to have a worse one which is probably still togglable tho). Also, I think that it's easier to use resolvelib directly w/o pip's wrappers around it because pip-tools doesn't need all of those features baked in pip IMHO. Also, resolvelib has a public API and pip does not + relying on pip is a lock-in for the version of resolvelib that changes over time. By the way, you mentioned pipenv — AFAIK it also uses resolvelib. The only thing that I know of that doesn't is poetry, it has its own resolver called mixology which is pretty opinionated and implements a different resolution algorithm (PubGrub) that is coming from the Dart lang ecosystem. |
When I was integrating it into ansible-galaxy, I was at this point of 90% works in an hour after the start, and then the next 90% (polishing/testing/etc) lasted several months 😃 |
@atugushev Sorry to bother, I'd like to know if there's any news about this PR and if we could expect an improved resolver for this year? Thanks! |
@FlorentJeannot thanks for pinging 🙏🏻 It's at the top of my TODO list. |
@FlorentJeannot try #1539 which adds support for pip's 2020 dependency resolver |
Works with new resolver #1539: Details
|
This has been fixed in #1539 with the backtracking resolver, try |
For some reason
pip-compile
decides to pin a direct dependency's (google-api-python-client
) dependency (google-auth-httplib2
) to a higher-than-necessary version (0.1.0
instead of0.0.4
), which causes a clash between another direct dependency (httplib2==0.11.3
) and the resolved version (google-auth-httplib2==0.1.0
requireshttplib2>=0.15.0
).Directly running
pip install google-api-python-client==1.7.8 httplib2==0.11.3
results in:Environment Versions
Steps to replicate
Expected result
Actual result
The text was updated successfully, but these errors were encountered: