使用不同的所需依赖项版本了解Python / pip的行为

时间:2017-11-20 14:42:22

标签: python pip

我正在为名为main的大型项目创建库。当存在以下依赖结构时,我无法理解Python / pip的行为:

  • main取决于lib1,具体取决于lib2==1.0.0
  • main取决于lib2==2.0.0

显示为树,

main
- lib2==2.0.0
- lib1==x.x.x
  - lib2==1.0.0

这会产生一些麻烦,因为我的主要项目依赖于lib2的v2提供的API,而另一个主要项目的依赖项依赖于lib2的早期版本。

在这种情况下,Python / pip的行为是什么?是否会安装和保留两个库?有没有办法优雅地解决这个版本冲突?

(例如,在npm中,将安装这两个版本的库,并且相应的从属库需要正确的版本。)

1 个答案:

答案 0 :(得分:0)

大多数情况下,特定模块的从属库会根据构建它们时使用的模块版本而有所不同。

例如,我刚刚安装Spacy时遇到了这个问题。我的项目使用的是Numpy --version 1.0(仅作为示例)。但Spacy使用了Numpy --version 2.0。

我遇到了同样的问题所以我只是使用一个单独的环境来运行整个项目。安装了该环境中的所有模块并注意到如果在Spacy之前安装了Numpy并且版本比Numpy版本更旧了Spacy,然后它将覆盖numpy版本以保持版本日期更新为使用它最新版本的模块。(或至少尝试)。

我可能没有给你一个明确的答案,但只是从我所看到的内容中分享一些见解。