pip wheel 是如何解决传递依赖的?
How does pip wheel resolves transitive dependencies?
当我 运行 pip wheel sentry-sdk
它下载以下 wheel 文件:
certifi-2020.6.20-py2.py3-none-any.whl
sentry_sdk-0.18.0-py2.py3-none-any.whl
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"
) 所以我认为降级会起作用但我想确保避免生产崩溃。
谢谢
pip的当前版本(2020-10-13)does not have a dependency resolver,它会贪婪地选择第一个约束(所以如果urllib3
首先遇到unbounded,它会选择最新版本——即使以后的软件包有更严格的要求)
这在 pip 中正在改变,你可以 enable the resolver as an opt-in in pip>=20.2 它将成为未来的默认值(今年晚些时候)
当我 运行 pip wheel sentry-sdk
它下载以下 wheel 文件:
certifi-2020.6.20-py2.py3-none-any.whl
sentry_sdk-0.18.0-py2.py3-none-any.whl
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"
) 所以我认为降级会起作用但我想确保避免生产崩溃。
谢谢
pip的当前版本(2020-10-13)does not have a dependency resolver,它会贪婪地选择第一个约束(所以如果urllib3
首先遇到unbounded,它会选择最新版本——即使以后的软件包有更严格的要求)
这在 pip 中正在改变,你可以 enable the resolver as an opt-in in pip>=20.2 它将成为未来的默认值(今年晚些时候)