在我正在使用的Python库的
requirements.txt
中,指定了如下要求之一:
mock-django~=0.6.10
~=
是什么意思?
这意味着它将选择最新版本的软件包,大于或等于0.6.10,但仍然是0.6.*版本,因此它不会下载0.7.0。如果包维护者尊重语义版本控制(规定重大更改只应在主要版本中发生),它可以确保您获得安全修复,但保持向后兼容性。
或者,正如 PEP 440 所说:
对于给定的发布标识符 V.N ,兼容发布子句大约相当于一对比较子句:
>= V.N, == V.*
~=
兼容版本(包括发布前和发布后)的完整定义是:
兼容版本条款由兼容版本组成 运算符
和版本标识符。它匹配任何候选版本 预计与指定版本兼容。~=
指定的版本标识符必须采用标准格式 版本方案中描述。本地版本标识符不是 在此版本说明符中允许。
对于给定的发布标识符
,兼容的发布子句是 大约相当于一对比较子句:V.N
>= V.N, == V.*
此运算符不得与单段版本号一起使用,例如
。~=1
例如,以下几组版本子句是等效的:
~= 2.2
>= 2.2, == 2.*
~= 1.4.5
>= 1.4.5, == 1.4.*
如果预发布、后发布或开发版本在 兼容发布子句为
,则忽略后缀 在确定所需的前缀匹配时:V.N.suffix
~= 2.2.post3
>= 2.2.post3, == 2.*
~= 1.4.5a4
>= 1.4.5a4, == 1.4.*
发布段比较的填充规则意味着 兼容发布条款中假定的前向兼容性程度 可以通过在版本中附加额外的零来控制 说明符:
~= 2.2.0
>= 2.2.0, == 2.2.*
~= 1.4.5.0
>= 1.4.5.0, == 1.4.5.*
请注意,这不适用于语义版本控制预版本。
例如,
2.3.4.dev123+abc
应该是> 2.3.3
和< 2.3.4
但是
~=2.3.4.dev123+abc
发布后将 NOT 采取 2.3.4
。
~= 表示兼容版本。不低于 0.6.10 及更高 (0.6.*)。
兼容发布子句由兼容发布运算符 ~= 和版本标识符组成。它匹配任何预期与指定版本兼容的候选版本。
您可以在此处阅读更多内容:https://www.python.org/dev/peps/pep-0440/#兼容-release