DEV Community

CodingShower
CodingShower

Posted on

What is Python pip Dependency Resolution?

When you are using multiple packages in your Python project, these top level packages may depend on a common package with different version constraints. pip smartly resolves which version of this common dependancy to install.

For instance, if package foo has a dependancy on bob>=2.0.0 where as bar has a dependancy on bob<=3.0.0, pip will have to resolve which version to download and install to make sure it is able to conform to both the constraints.

This process is known as dependancy resolution and involves an intense process (known as backtracking).

Eventually during the dependancy resolution, conflicts may arise (dependancy hell), due to which your installation may fail. This behaviour is different across the older versions of pip compared to the newer ones (legacy and new dependancy resolvers).

Sometimes it may be useful to know the details on how pip choses the version when given a list of multiple versions of the same dependency from the dependency tree, how to resolve conflicts when they arise and how to go about finding out conflicts that already exists in the package installed in the current environment/system.

For some folks just knowing what dependancy resolution is (as stated above), might be enough. But for some, the details might be really interesting. If thats the case, then head over to this article to have in in-depth encounter :)

Top comments (0)