在requirements.txt
我正在使用的 Python 库中,其中一个要求被指定为:
mock-django~=0.6.10
是什么~=
意思?
在requirements.txt
我正在使用的 Python 库中,其中一个要求被指定为:
mock-django~=0.6.10
是什么~=
意思?
这意味着它将选择最新版本的包,大于或等于0.6.10,但仍然是0.6.*版本,因此不会下载例如0.7.0。如果包维护者尊重语义版本控制(这表明重大更改应仅在主要版本中发生),它可确保您获得安全修复但保持向后兼容性。
或者,正如 PEP 440 所说:
对于给定的发布标识符 VN ,兼容的发布子句大致等价于一对比较子句:
>= V.N, == V.*
~= 表示兼容版本。不低于 0.6.10 或更高 (0.6.*)。
兼容的发布子句由兼容的发布运算符 ~= 和版本标识符组成。它匹配预期与指定版本兼容的任何候选版本。
你可以在这里阅读更多:https ://www.python.org/dev/peps/pep-0440/#compatible-release
~=
兼容发布(包括发布前和发布后)的完整定义是:
兼容发布子句由兼容发布操作符
~=
和版本标识符组成。它匹配预期与指定版本兼容的任何候选版本。指定的版本标识符必须采用版本方案中描述的标准格式。此版本说明符中不允许使用本地版本标识符。
对于给定的 release identifier
V.N
,兼容的 release 子句大致等价于一对比较子句:
>= 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.*