在安装过程中 Pip 显示软件包安装的依赖性原理

时间:2020-12-22 04:50:51

标签: python pip

当我尝试使用 pip 安装某些软件包时,有时某些依赖项无法安装,我需要找出原因。一个基本问题是“为什么我根本需要安装包 X?”,但我无法从 pip install 输出中找到任何方法来回答这个问题,即使使用 -vvv。 Pip 告诉我它正在安装什么,但它没有说明为什么它正在安装。

有多种工具可以检查包的依赖树,例如pipdeptree,尤其是当它们已经安装时,但是当安装失败时这些对我没有帮助。并且似乎 pip 在内部肯定已经解决了这些依赖关系,并且知道它为什么选择安装特定的包。那么我怎样才能让它在安装时与我分享这些信息?

编辑:在告诉您已经满足哪些依赖项时,它已经显示了此信息,例如

Requirement already satisfied: pillow>=6.2.0 in /data2/users/bfarmer/envs/bfarmer_dev_py  39/lib/python3.9/site-packages (from matplotlib>=1.3.1->stf-modelling) (8.0.1)
Requirement already satisfied: certifi>=2020.06.20 in /data2/users/bfarmer/envs/bfarmer_  dev_py39/lib/python3.9/site-packages (from matplotlib>=1.3.1->stf-modelling) (2020.12.5)

(至少我认为这是在这些行的末尾告诉我的)。但是当我最需要这些信息时,即出现问题时,我什么也得不到:

Collecting PIL
  Downloading http://ehp.bom.gov.au/ehprepo/pypi/simple/pil/PIL-1.1.7.tar.gz (506 kB)
     |████████████████████████████████| 506 kB 8.1 MB/s
    ERROR: Command errored out with exit status 1:
    ...
    <traceback etc. follows>

在这个例子中,我想知道为什么在枕头已经存在的情况下,为什么有些包装想要 PIL。 PIL 基本上已经死了,所以我需要更新任何依赖于 PIL 的包来使用枕头。但我不知道那可能是什么包,也找不到任何方法来找出答案。这似乎是基本信息,肯定有办法获取。

1 个答案:

答案 0 :(得分:0)

好像没有,pip 不能这样做。我在这里发现了这个问题:

https://github.com/pypa/pip/issues/53

听起来他们正在努力,但目前什么都不存在。不过,我仍然对解决方法/第三方解决方案感兴趣,或者其他开发人员对他们在这种情况下通常会做什么的建议。好像我只需要手动浏览我的依赖项的所有依赖项,这看起来很愚蠢。也许我可以在 pip 源代码中添加一些东西...

相关问题