Python Pip显示安装期间软件包安装的依赖性原理

Python Pip显示安装期间软件包安装的依赖性原理,python,pip,Python,Pip,当我试图用pip安装一些软件包时,有时某些依赖项无法安装,我需要找出原因。一个基本的问题是“为什么我需要安装程序包X?”,但我无法从pip install输出中找到答案,即使使用-vvv。Pip告诉我它正在安装什么,但没有说明为什么要安装 有各种工具可以内省包的依赖关系树,例如,pipdeptree,特别是当它们已经安装时,但这些工具在安装失败时对我没有帮助。在内部,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
正在下载http://ehp.bom.gov.au/ehprepo/pypi/simple/pil/PIL-1.1.7.tar.gz (506KB)
|████████████████████████████████| 506KB 8.1MB/s
错误:命令出错,退出状态为1:
...

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

似乎不是,皮普不能这样做。我在这里发现了这个问题:


听起来他们正在做,但目前什么都不存在。不过,我仍然对变通方法/第三方解决方案感兴趣,或者对其他开发人员在这种情况下通常做什么的建议感兴趣。似乎我必须手动搜索我的依赖项的所有依赖项,这看起来很愚蠢。也许我可以在pip源代码中插入一些东西…

我想也许最新的pip版本(带有新的依赖解析程序)更明确地说明了发生了什么,它在做什么,为什么要做出这样的决定。您使用的是什么版本的pip?