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



假设我们在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等其他包管理器那样。

当 pip 安装软件包时,它会自动安装任何依赖的 Python 软件包,而不检查这些软件包是否与以前安装的软件包冲突。它将安装包及其任何依赖项,而不考虑现有安装的状态。因此,具有例如Google Tensorflow工作安装的用户可能会发现,在使用pip安装不同的软件包时,它停止工作,该软件包需要与Tensorflow使用的版本不同的依赖NumPy库版本。在某些情况下,包可能看起来有效,但在细节上会产生不同的结果。

Anaconda (Python distribution( - 维基百科

在这个话题上,事情很快就会发生变化。由于pip的开发人员目前正在开发一个新的依赖解析器

  • https://pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html

要立即对其进行测试,您可能需要安装pip 20.2b1并启用不稳定功能">解析器",例如以下任一功能

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

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

  • https://discuss.python.org/t/announcement-pip-20-2b1-release/4242

其他参考资料:

  • http://www.ei8fdb.org/thoughts/2020/05/test-pips-alpha-resolver-and-help-us-document-dependency-conflicts/
  • https://pradyunsg.me/blog/2020/03/27/pip-resolver-testing/
  • https://www.pythonpodcast.com/pip-resolver-dependency-management-episode-264/
<小时 />

更新 点 20.2

  • https://pythoninsider.blogspot.com/2020/07/upgrade-pip-20-2-changes-20-3.html

相关内容

  • 没有找到相关文章

最新更新