我正在使用pip工具5.4.0、PIP20.3.1和python3。我已经看过pip工具的源代码和关于新解析器的pip博客文章。我的问题没有得到明确的答案。如果我跑步:
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工具中是否存在内部约束,或者新的pip解析器中是否存在依赖项检查,这些约束会阻止子依赖项升级到超出其约束的程度,例如,mccabe升级到0.7.0
就我所知(使用pip工具已经有几年了),只要您只从“锁定”的需求文件安装依赖项,pip工具将始终为您提供一个稳定的树
最初的pip工具作者在这里(尽管今天的维护现在由JazzBand collective进行)👋
是的,所有顶级约束(您自己放在
requirements.in
文件中的约束)以及任何次要约束(随后得到解决的每个具体包版本所需的约束)都形成了一个大的“约束空间”。pip工具的解析器将始终解析该约束空间内的版本,或抛出错误在您的示例中
mccabe
所需的flake8==3.8.4
版本将因此得到尊重,因此得到解决的mccabe
版本将永远不会是0.7
或更高版本。(这正是pip-tools
的目的。)在撰写本文时,3.8.4是flake8的最高版本。但是,如果您在
requirements.in
文件中指定了flake8
(没有任何版本限制),那么它将来可能会升级到,比如说3.9.0。未来的版本可能会为mccabe
指定更大的范围,比如mccabe>=0.6,<0.8
之类的。在这种情况下,pip-compile upgrade
的结果当然可以升级到0.7.0相关问题 更多 >
编程相关推荐