在我正在使用的Python库的requirements.txt中,其中一个需求是这样指定的:

mock-django~=0.6.10

~=是什么意思?


当前回答

兼容的发布子句由兼容的发布操作符~=和版本标识符组成。它匹配预期与指定版本兼容的任何候选版本。

你可以在这里阅读更多:https://www.python.org/dev/peps/pep-0440/#compatible-release

其他回答

这意味着它将选择包的最新版本,大于或等于0.6.10,但仍在0.6。*版本,所以它不会下载0.7.0,例如。如果包维护者尊重语义版本控制(即只在主要版本中发生破坏性更改),它可以确保您获得安全修复,但保持向后兼容性。

或者,正如PEP 440所言:

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

PEP 440中的定义 文档中有完整的示例

兼容的发布子句由兼容的发布操作符~=和版本标识符组成。它匹配预期与指定版本兼容的任何候选版本。

你可以在这里阅读更多:https://www.python.org/dev/peps/pep-0440/#compatible-release

除了现有的答案,我认为还有一点非常重要,那就是

~=0.6.10表示>=0.6.10,==0.6

以下也是正确的

~=0.6表示>=0.6,==0

PEP文档中提到了这一点。

这是“兼容发布”版本说明符。

它相当于:mock-django >= 0.6.10, == 0.6。*,是一种匹配期望兼容的版本的简洁方式。说白了,这有点像在说:“我需要一个mock-django的版本,它至少要像0.6.10一样新,但又不能新到与它不兼容。”

如果你不确定所有这些版本号的东西,快速看一下PEP440版本方案应该会让你理清头绪!

~=表示兼容版本。不低于0.6.10或更高(0.6.*)。