gpt4 book ai didi

python - 当一个包指定范围而另一个包没有指定范围时,依赖关系解析如何与 pip 一起工作?

转载 作者:行者123 更新时间:2023-12-01 07:58:29 25 4
gpt4 key购买 nike

我有一个requirement.txt,只有2个依赖项:

sentry-sdk==0.7.11
requests==2.21.0

我检查了两个包的setup.py,它们都依赖于urllib3:

  • 请求提供了一个不接受 1.25 的范围
  • sentry-sdk 并未指定特定版本或范围

最近发布了新版本的 urllib3 (1.25),当我使用 pip 安装依赖项时,出现以下错误:

ERROR: requests 2.21.0 has requirement urllib3<1.25,>=1.21.1, but you'll have urllib3 1.25 which is incompatible.

这种行为是预期的还是 pip 中的错误?

在 install_requires 中未指定依赖项的版本是什么意思? “强制使用最新版本”?

最佳答案

您观察到此行为的原因是因为 pip 首先安装了 sentry-sdk。由于它没有版本限制,因此您将获得最新版本 (1.25)。当要安装requests时,此版本不兼容。

解决这个问题的唯一方法是解决全局的所有版本约束,据我所知 pip 无法做到这一 pip 。

解决方案是在您的requirements.txt中指定您想要的urllib3版本(因为您知道您使用的依赖项的版本)。对于没有约束的 transient 包来说,这可能是一个很好的做法。

实际上,使用 pip 进行可重现构建的方法就是始终这样做

pip freeze > requirements.txt

并检查结果。这样,第三方软件包更新就不会破坏您的构建,并且您可以随时手动升级(并检查结果)。

关于python - 当一个包指定范围而另一个包没有指定范围时,依赖关系解析如何与 pip 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55826439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com