大于等于 requirements.txt 然后小于什么?

75

我在我的要求文件中有这行内容

django>=1.10,<1.11

这是否意味着我需要安装 Django 版本>= 1.10,但小于1.11

1个回答

99
是的。pip手册[doc]中有一个关于“需求规范”格式的部分。这些在PEP-508 [pep]PEP-440 [pep]中有详细介绍:
比较运算符决定版本子句的类型:
1. ~=:兼容的发布子句 2. ==:版本匹配子句 3. !=:版本排除子句 4. <=,>=:包含的有序比较子句 5. <,>:独占的有序比较子句 6. ===:任意相等子句。
逗号(“,”)等同于逻辑与运算符:候选版本必须匹配所有给定的版本子句才能作为整体匹配该规范。
在你的情况下,这意味着Django版本是1.10或更高,而不是1.11或更高(所以1.10可以,1.10.1也可以,但不包括1.11、1.11.1或2.0.1)。

1
有没有办法说“除了这个范围之外的任何版本”?换句话说,我该如何表达 setuptools 版本 <45.0.0 >=49.9.1 - Jonathon Reinhart
1
@JonathonReinhart:就我所知,不行,特别是因为没有分离(逻辑或)。您可以使用!= 45。*,!= 46。*,!= 47。*,!= 48。*,!= 49.1。*,!= 49.2。*,!= 49.3。*,!= 49.4。*,!= 49.5。*,!= 49.6。*,!= 49.7。*,!= 49.8。*,!= 49.9.0。*来实现此操作。 - Willem Van Onsem
我得出了同样不幸的结论。幸运的是,我打错了一个字,范围是 49.1.1(而不是 49.9.1)。所以我使用了这个:setuptools !=45.*, !=46.*, !=47.*, !=48.*, !=49.1.0。谢谢! - Jonathon Reinhart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接