319

我想知道是否有任何方法可以告诉 pip,特别是在需求文件中,安装一个具有最低版本(pip install package>=0.2)和永远不应安装的最高版本(理论 api:)的包pip install package<0.3

我问是因为我正在使用一个正在积极开发的第三方库。我希望我的 pip 要求文件指定它应该始终安装 0.5.x 分支的最新次要版本,但我不希望 pip 尝试安装任何较新的主要版本(如 0.6.x),因为API是不同的。这很重要,因为即使 0.6.x 分支可用,开发人员仍在向 0.5.x 分支发布补丁和错误修复,所以我不想package==0.5.9在我的需求文件中使用静态行。

有没有办法做到这一点?

4

3 回答 3

438

你可以做:

$ pip install "package>=0.2,<0.3"

并且pip会寻找最佳匹配,假设版本至少为 0.2,且小于 0.3。

这也适用于 pip需求文件请参阅PEP 440中有关版本说明符的完整详细信息。

于 2012-01-10T22:25:01.187 回答
147

您还可以使用:

pip install package==0.5.*

这更一致且易于阅读。

于 2018-01-03T09:34:28.767 回答
131

一个优雅的方法是~=根据PEP 440使用兼容的发布运算符。在您的情况下,这相当于:

package~=0.5.0

例如,如果存在以下版本,它将选择0.5.9

  • 0.5.0
  • 0.5.9
  • 0.6.0

为了澄清起见,每一对都是等价的:

~= 0.5.0
>= 0.5.0, == 0.5.*

~= 0.5
>= 0.5, == 0.*
于 2018-04-28T19:26:11.740 回答