微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用`--pre`选项时,预发行版本与pip不匹配 摘要说明

如何解决使用`--pre`选项时,预发行版本与pip不匹配 摘要说明

想象一下您已经发布了两个预发行版:

 package 0.0.1.dev0
 package 0.0.2.dev0

我在install_requires的{​​{1}}部分中指出:

setup.py

现在,当我运行[ 'package>=0.0.2,<1.0.0' ] 时出现错误

错误:找不到满足要求包 = 0.0.2的版本(来自版本:0.0.1.dev0、0.0.2.dev0) 错误:找不到软件包 = 0.0.2

的匹配分布

我在做什么错? pip install . --upgrade --pre标志不是应该告诉pip匹配预发行版本吗?

解决方法

摘要

pip --pre选项指示pip包括潜在的匹配预发行版本和开发版本,但不会更改版本匹配的语义。

由于预发行版0.0.2.dev0比稳定发行版0.0.2要早,因此pip在搜索至少与稳定发行版0.0.2一样新的软件包时会正确报告错误。

说明

混淆的重点是点--pre选项,该选项记录为:

--pre
包括预发行和开发版本。默认情况下,pip仅查找稳定版本。

问题的前提是--pre选项应更改程序包版本匹配的语义,以便在与稳定版本匹配时将忽略预发行版本后缀。

要进一步说明,请考虑兼容的发布运营商 ~= 。 PEP 440第Compatible release节的部分内容为:

对于给定的发布标识符V.N,兼容的发布子句大约等于一对比较子句:

>= V.N,== V.*

...

如果在兼容的发布子句中将发布前,发布后或开发中的发布命名为V.N.suffix,则在确定所需的前缀匹配项时将忽略后缀:

〜= 2.2.post3 = 2.2.post3,== 2。*

〜= 1.4.5a4 = 1.4.5a4,== 1.4。*

此示例清楚地显示了后缀被忽略。

以下要求与0.0.2.dev0不匹配:

install_requires=['package~=0.0.2']  # ERROR: ResolutionImpossible

此示例确实与稳定版本0.0.2相匹配:

install_requires=['package~=0.0.2.dev0']  # OK - suffix ignored

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。