Hacker News new | ask | show | jobs
by nitely 2026 days ago
They either haven't experience the pain or are oblivious to it. Pip old resolver is borked[0]:

> [The new resolver] will reduce inconsistency: it will no longer install a combination of packages that is mutually inconsistent. At the moment, it is possible for pip to install a package which does not satisfy the declared requirements of another installed package. For example, right now, pip install "six<1.12" "virtualenv==20.0.2" does the wrong thing, “successfully” installing six==1.11, even though virtualenv==20.0.2 requires six>=1.12.0,<2 (defined here). The new resolver would, instead, outright reject installing anything if it got that input.

[0]: https://pyfound.blogspot.com/2020/03/new-pip-resolver-to-rol...

2 comments

I haven’t found a compelling need to switch to Poetry, but independent experimentation and competition can be good thing. I wouldn’t be surprised if the new pip resolver was partly inspired by Poetry, similar to how some NPM improvements were motivated by Yarn. [1]

[1]: https://javascript.christmas/2019/10

That would probably be caught by the CI, though, wouldn't it? One of the packages would fail to install in a clean venv and the tests would fail.
No, it won't be caught in CI. The old version of pip didn't recognize that as an error condition.
Not if you used the old version of pip. That is hopefully fixed now with the new resolver.
Hm, you're right. I misread it as saying that it would 1) install six, 2) fail to install virtualenv and 3) fail to report an error.

But the old resolver actually installs both packages, even though it should just abort.