在我正在使用的Python库的requirements.txt中,其中一个需求如下所示:
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.*
兼容的发布子句由兼容的发布操作符~=和版本标识符组成。它匹配预期与指定版本兼容的任何候选版本。
你可以在这里阅读更多:https://www.python.org/dev/peps/pep-0440/#compatible-release
这是“兼容版本”版本说明符。
它等价于:mock-django >= 0.6.10, == 0.6.*,是一种匹配期望兼容的版本的简洁方式。说白了,这有点像在说:“我需要一个mock-django的版本,它至少要像0.6.10一样新,但又不能新到与它不兼容。”
mock-django >= 0.6.10, == 0.6.*
如果你不确定所有这些版本号的东西,快速看一下PEP440 版本计划应该整理你!
~=表示兼容版本。不低于0.6.10或更高(0.6.*)。
除了现有的答案,我认为还有一点非常重要,那就是
~=0.6.10表示>=0.6.10, ==0.6
以下也是正确的
~=0.6表示>=0.6, ==0
它在PEP文档中提到。
~= 兼容的版本的完整定义(包括发布前和发布后)是:
兼容发布子句由兼容发布组成 操作符~=和版本标识符。它匹配任何候选版本 期望与指定的版本兼容 指定的版本标识符必须为标准格式 在版本计划中描述。本地版本标识符不是 .在此版本说明符中允许 对于给定的发布标识符V.N,兼容的发布子句为 近似等价于一对比较子句:
兼容发布子句由兼容发布组成 操作符~=和版本标识符。它匹配任何候选版本 期望与指定的版本兼容
指定的版本标识符必须为标准格式 在版本计划中描述。本地版本标识符不是
V.N
此操作符绝对不能与单个段版本号一起使用,例如~=1。 例如,以下两组版本子句是等价的:
此操作符绝对不能与单个段版本号一起使用,例如~=1。
~=1
例如,以下两组版本子句是等价的:
~= 2.2 >= 2.2, == 2.* ~= 1.4.5 >= 1.4.5, == 1.4.*
如果在a中命名了预发布、后发布或开发发布 compatible release子句为V.N.suffix,则该后缀将被忽略 当确定所需的前缀匹配时:
V.N.suffix
~= 2.2.post3 >= 2.2.post3, == 2.* ~= 1.4.5a4 >= 1.4.5a4, == 1.4.*
发布段比较的填充规则意味着 兼容发布子句中假定的向前兼容程度 是否可以通过向版本附加额外的零来控制 说明符:< / p >
~= 2.2.0 >= 2.2.0, == 2.2.* ~= 1.4.5.0 >= 1.4.5.0, == 1.4.5.*