pip 如何解析 install_requires 中的条目,尤其是关于来自 conda 的已安装软件包?
How does pip resolve entries in install_requires especially in regards to already installed packages from conda?
在我的项目中,我依赖于一个 python 包,该包只能通过 conda 而不是 pip。我知道 pip 找不到它,因此如果尚未安装则无法安装它。但我仍然想将它添加到 install_requires
,这样至少安装失败并且用户知道缺少什么。
事实上,我试过了,对于这个特定的依赖项,pip 总是说它没有安装,即使实际上安装了正确的版本。我还依赖于 numpy,它恰好也已被 conda 安装,并且由 pip 找到(+ 对于其他依赖项也是如此)
所以我对解析的工作原理有点困惑,pip 如何确定软件包是否已安装?
据我所知,pip
检查所提及包的 egg-info
或 dist-info
文件夹是否存在以及文件夹名称的版本。示例:numpy-1.19.2.dist-info
对于 dist-info
,仅存在文件夹是不够的。它还必须包含一个 METADATA 文件。但是它可以是空的。
无论如何,结论是如果一个包在安装时没有创建这些文件夹之一,pip
看不到它已安装,因此会由于缺少要求而失败。
在我的项目中,我依赖于一个 python 包,该包只能通过 conda 而不是 pip。我知道 pip 找不到它,因此如果尚未安装则无法安装它。但我仍然想将它添加到 install_requires
,这样至少安装失败并且用户知道缺少什么。
事实上,我试过了,对于这个特定的依赖项,pip 总是说它没有安装,即使实际上安装了正确的版本。我还依赖于 numpy,它恰好也已被 conda 安装,并且由 pip 找到(+ 对于其他依赖项也是如此)
所以我对解析的工作原理有点困惑,pip 如何确定软件包是否已安装?
据我所知,pip
检查所提及包的 egg-info
或 dist-info
文件夹是否存在以及文件夹名称的版本。示例:numpy-1.19.2.dist-info
对于 dist-info
,仅存在文件夹是不够的。它还必须包含一个 METADATA 文件。但是它可以是空的。
无论如何,结论是如果一个包在安装时没有创建这些文件夹之一,pip
看不到它已安装,因此会由于缺少要求而失败。