假设我们在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)不同可以做到。
答案 0 :(得分:1)
当pip安装软件包时,它将自动安装任何相关的Python软件包,而无需检查这些软件包是否与以前安装的软件包冲突。它将安装软件包及其任何依赖项,而与现有安装的状态无关。因此,安装了有效的Google Tensorflow的用户可以发现,使用pip安装了与Tensorflow使用的版本不同的软件包,该软件包需要依赖NumPy库的版本不同,这会导致安装停止。在某些情况下,该程序包似乎可以工作,但详细产生不同的结果。
答案 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