pip-tools and/or new resolver 是否会阻止升级到破坏主依赖的子依赖版本?
Does pip-tools and/or new resolver prevent upgrading to a subdependency version that breaks a primary dependency?
我正在使用 pip-tools 5.4.0、pip 20.3.1 和 python3。我查看了 pip-tools 源代码和关于新解析器的 pip 博客 post。我没有看到我的问题的明确答案。如果我 运行:
pipdeptree
flake8==3.8.4
- mccabe [required: >=0.6.0,<0.7.0, installed: 0.6.1]
- pycodestyle [required: >=2.6.0a1,<2.7.0, installed: 2.6.0]
- pyflakes [required: >=2.2.0,<2.3.0, installed: 2.2.0
...
如果我 运行 pip-compile --upgrade
,pip-tools 中是否存在内部约束或新 pip 解析器中的依赖性检查是否会阻止子依赖性升级超出其约束,例如,mccabe 升级到0.7.0?
据我所知(使用 pip-tools 已有几年),pip-tools 将始终为您提供稳定的树,只要您这样做,然后仅从“锁定”的需求文件安装依赖项。
原始 pip-tools 作者在这里(虽然今天的维护现在由 JazzBand collective 进行)
是的,所有顶级约束(您自己放入 requirements.in
文件的约束)以及任何次要约束(随后解析的每个具体包版本所需的约束)都形成一大“约束space”。 pip-tools 的解析器将始终在该约束 space 内解析版本,否则会抛出错误。
在您的示例中,flake8==3.8.4
需要的 mccabe
版本将因此得到尊重,因此得到解析的 mccabe
版本永远不会是 0.7
或更高。 (这就是 pip-tools
的目的。)
在撰写本文时post,3.8.4 是 flake8 的最高版本。但是,如果您在 requirements.in
文件中指定了 flake8
(没有任何版本限制),那么 it 可能会升级到例如 3.9.0未来。未来的版本可能会为 mccabe
指定更广泛的范围,例如 mccabe>=0.6,<0.8
之类的。那样的话,pip-compile --upgrade
的结果当然可以升级mccabe
到0.7.0。
我正在使用 pip-tools 5.4.0、pip 20.3.1 和 python3。我查看了 pip-tools 源代码和关于新解析器的 pip 博客 post。我没有看到我的问题的明确答案。如果我 运行:
pipdeptree
flake8==3.8.4
- mccabe [required: >=0.6.0,<0.7.0, installed: 0.6.1]
- pycodestyle [required: >=2.6.0a1,<2.7.0, installed: 2.6.0]
- pyflakes [required: >=2.2.0,<2.3.0, installed: 2.2.0
...
如果我 运行 pip-compile --upgrade
,pip-tools 中是否存在内部约束或新 pip 解析器中的依赖性检查是否会阻止子依赖性升级超出其约束,例如,mccabe 升级到0.7.0?
据我所知(使用 pip-tools 已有几年),pip-tools 将始终为您提供稳定的树,只要您这样做,然后仅从“锁定”的需求文件安装依赖项。
原始 pip-tools 作者在这里(虽然今天的维护现在由 JazzBand collective 进行)
是的,所有顶级约束(您自己放入 requirements.in
文件的约束)以及任何次要约束(随后解析的每个具体包版本所需的约束)都形成一大“约束space”。 pip-tools 的解析器将始终在该约束 space 内解析版本,否则会抛出错误。
在您的示例中,flake8==3.8.4
需要的 mccabe
版本将因此得到尊重,因此得到解析的 mccabe
版本永远不会是 0.7
或更高。 (这就是 pip-tools
的目的。)
在撰写本文时post,3.8.4 是 flake8 的最高版本。但是,如果您在 requirements.in
文件中指定了 flake8
(没有任何版本限制),那么 it 可能会升级到例如 3.9.0未来。未来的版本可能会为 mccabe
指定更广泛的范围,例如 mccabe>=0.6,<0.8
之类的。那样的话,pip-compile --upgrade
的结果当然可以升级mccabe
到0.7.0。