PIP如何确定多个依赖项的依赖项版本

时间:2020-07-01 12:46:30

标签: python pip package dependency-management package-managers

假设我们在Python中使用PIP作为软件包安装程序,具有以下依赖关系树:

A==1.2.1:
|  - B==1.5.4
|  - C==?.?.?

D==1.3.0:
|  - C==?.?.?

我们还假设软件包C的现有版本如下:

- 0.0.8
- 1.0.2

我们知道,PIP不会将同一软件包的不同版本安装到环境中。这意味着它必须为所有家属选择一个合适的版本。

我根本无法理解PIP如何确定合适的版本。

如果程序包A依赖于C==0.0.8,而程序包D依赖于C==1.0.2,则这种情况就难以解决,这与其他程序包管理器(例如NPM)不同可以做到。

2 个答案:

答案 0 :(得分:1)

当pip安装软件包时,它将自动安装任何相关的Python软件包,而无需检查这些软件包是否与以前安装的软件包冲突。它将安装软件包及其任何依赖项,而与现有安装的状态无关。因此,安装了有效的Google Tensorflow的用户可以发现,使用pip安装了与Tensorflow使用的版本不同的软件包,该软件包需要依赖NumPy库的版本不同,这会导致安装停止。在某些情况下,该程序包似乎可以工作,但详细产生不同的结果。

Anaconda (Python distribution) - Wikipedia

答案 1 :(得分:1)

在此主题上,情况将很快改变。由于 pip 的开发人员当前正在开发新的依赖解析器


要今天进行测试,您可能需要安装 pip 20.2b1 并启用不稳定功能 resolver ”,例如,以下之一:

  • PIP_UNSTABLE_FEATURE=resolver python -m pip install SomeProject
  • python -m pip --unstable-feature=resolver install SomeProject

有关更多详细信息,请参见以下链接:


其他参考文献:


更新 点20.2