pip未正确解析子/孙依赖项

2024-05-20 02:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模块的依赖关系树,它是这样工作的(→ 表示依赖关系):

a → b, c
b → ruamel.yaml >= 0.16.5
c → ruamel.yaml < 0.16.6, >=0.12.4

我很清楚,ruamel.yaml0.16.5将正确地解决这两个依赖关系。但是,当Ipip install a时,我会得到以下日志:

Collecting ruamel.yaml>=0.16.5
  Downloading ruamel.yaml-0.16.10-py2.py3-none-any.whl (111 kB)

后来:

ERROR: <package c> 0.4.0 has requirement ruamel.yaml<0.16.6,>=0.12.4, but you'll have ruamel-yaml 0.16.10 which is incompatible.

因此,pip在选择安装哪些软件包时完全忽略了孙子依赖项。但它意识到,它最终把事情搞砸了。为什么pip没有在这里选择正确的包。有没有办法帮助它更好地工作


Tags: 模块installpipnoneyaml关系py3ruamel
1条回答
网友
1楼 · 发布于 2024-05-20 02:31:35

我相信这是目前正在研究的一个众所周知的问题。一周前的消息:http://pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html

同时,可以采取一些措施尝试缓解此类问题:

  • 恢复依赖项的顺序(在您的示例中a可以在b之前列出c
  • 使用附加的^{}^{}文件
  • 根据实际需要,另一种工具可能会有所帮助(我相信poetrypipenv,很可能其他工具也有更好的依赖项解析器,但它们不是pip的一对一替代品)

现在似乎已经可以测试pip未来的依赖解析程序了:

在某种程度上,似乎还可以通过pip check命令在当前版本或pip中测试此依赖项解析器

有关该主题的更多参考资料:

相关问题 更多 >