Python pip控制盘如何解决可传递依赖关系?

Python pip控制盘如何解决可传递依赖关系?,python,pip,pypi,python-wheel,Python,Pip,Pypi,Python Wheel,当我运行pip-wheel-sentry sdk时,它会下载以下wheel文件: certifi-2020.6.20-py2.py3无任何。whl sentry_sdk-0.18.0-py2.py3无任何。whl urllib3-1.25.10-py2.py3无任何.whl 其中sentry_sdk-0.18.0-py2.py3无任何。whl是我实际想要使用的库,其他库是此库工作所需的可传递依赖项。我理解该文件来自于,但我不理解的是,pip-wheel是如何选择上述可传递依赖项的版本的 更多上下

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

  • certifi-2020.6.20-py2.py3无任何。whl
  • sentry_sdk-0.18.0-py2.py3无任何。whl
  • urllib3-1.25.10-py2.py3无任何.whl
  • 其中
    sentry_sdk-0.18.0-py2.py3无任何。whl
    是我实际想要使用的库,其他库是此库工作所需的可传递依赖项。我理解该文件来自于,但我不理解的是,
    pip-wheel
    是如何选择上述可传递依赖项的版本的

    更多上下文 我的根本问题是,
    urlib3
    的已解决版本与我正在处理的项目的pex文件中已添加的另一个版本冲突(我使用Bazel生成pex)。我正在考虑降级
    urlib3
    的版本,以匹配我的项目的现有版本。查看it表示它只要求它大于
    1.10.0
    “urllib3>=1.10.0”
    ),因此我认为降级会起作用,但我希望确保避免生产崩溃


    感谢当前版本的pip(2020-10-13),它贪婪地选择第一个约束(因此,如果首先遇到无限制的
    urllib3
    ,它将选择最新版本——即使以后的包有更严格的要求)


    这在pip中正在被更改,您可以,并且它将在未来(今年晚些时候)成为默认版本。

    当前版本的pip(2020-10-13),它贪婪地选择第一个约束(因此,如果首先遇到无限制的urllib3,它将选择最新版本——即使以后的包有更严格的要求)

    这一点在pip中正在改变,您可以这样做,它将在未来(今年晚些时候)成为默认值