当我尝试使用 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 的包来使用枕头。但我不知道那可能是什么包,也找不到任何方法来找出答案。这似乎是基本信息,肯定有办法获取。
答案 0 :(得分:0)
好像没有,pip 不能这样做。我在这里发现了这个问题:
https://github.com/pypa/pip/issues/53
听起来他们正在努力,但目前什么都不存在。不过,我仍然对解决方法/第三方解决方案感兴趣,或者其他开发人员对他们在这种情况下通常会做什么的建议。好像我只需要手动浏览我的依赖项的所有依赖项,这看起来很愚蠢。也许我可以在 pip 源代码中添加一些东西...