A new resolver for pip [PRELIMINARY DRAFT]
The pip developers are in the process of rolling out a new resolver for pip (refer to the funded work here?). As part of that work, there will be some major changes to how pip determines what to install, based on package requirements.
What will change
The most significant changes to the reolver will be:
- 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. (Add example?).
- It will be stricter - if you ask pip to install two packages with incompatible requirements, it will refuse (rather than installing a broken combination, like it does now).
Also, this is a major change to a key part of pip - it's quite possible there will initially be bugs. We would like to make sure that those get caught before people start using the new version in production.
What can you do to help
First and most fundamentally, please test the new version of pip. While we have tried to make sure that pip's test suite covers as many cases as we can, we are very aware that there are people using pip with many different workflows and build processes, and we will not be able to cover all of those without your help.
- If you use pip to install your software, try out the new resolver and let us know if it works for you.
- If you have a build pipeline that depends on pip installing your dependencies for you, check that the new resolver does what you need.
- Run your project's CI (test suite, build process, etc.) using the new resolver, and let us know of any issues.
- If you have encountered resolver issues with pip in the past, check whether the new resolver fixes them. Also, let us know if the new resolver has issues with any workarounds you put in to address the current resolver's limitations. We'll need to ensure that people can transition off such workarounds smoothly.
Even before the new resolver is released as a beta, you can still help by running
pip check on your current
environment. This will report if you have any inconsistencies in your set of installed packages. Having a clean
installation will make it much less likely that you will hit issues when the new resolver is released (as well
as addressing hidden problems in your current environment
Also, spread the word! If you know of other people who rely on pip, who might not have seen this message, let them know.
And if you develop or support a tool that wraps pip or uses it to deliver part of your functionality, please make sure that the new resolver doesn't cause you any issues (it shouldn't, as it's an internal component of pip and shouldn't be visible to people embedding pip, but we'd like to be sure of that).
When will this be happening?
We intend to release the new resolver early in the second half of 2020. We will provide beta releases before that point as the work progresses, and we would appreciate as much feedback as we can get on the betas when they become available.