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)