pip wheel如何解决传递依赖关系?

时间:2020-10-13 10:08:04

标签: python pip pypi python-wheel

当我运行pip wheel sentry-sdk时,它将下载以下车轮文件:

  1. certifi-2020.6.20-py2.py3-none-any.whl
  2. sentry_sdk-0.18.0-py2.py3-none-any.whl
  3. urllib3-1.25.10-py2.py3-none-any.whl

sentry_sdk-0.18.0-py2.py3-none-any.whl是我实际上要使用的库,而其他库是此库正常工作所需要的传递依赖项。我了解该文件来自PyPI,但是我不了解的是pip wheel是如何选择上述传递依赖项的版本。

更多上下文

我的根本问题是,urllib3的已解决版本与已经添加到我正在处理的项目的pex文件中的另一个版本冲突(我正在使用Bazel生成pex)考虑降级urllib3的版本以匹配我项目的现有版本。查看setup.py from the sentry-sdk in GitHub时,它说只要求它大于1.10.0"urllib3>=1.10.0"),所以我认为降级是可行的,但我想确保避免生产崩溃。

谢谢

1 个答案:

答案 0 :(得分:2)

pip的当前版本(2020-10-13)does not have a dependency resolver,它会贪婪地选择第一个约束(因此,如果首先无界遇到urllib3,它将选择最新版本-即使更高版本的软件包有更严格的要求)

此功能已更改为点数,您可以enable the resolver as an opt-in in pip>=20.2,它将在将来(今年晚些时候)成为默认设置

相关问题