如何安装指定最小和最大版本范围的包?

423 投票
4 回答
270995 浏览
提问于 2025-04-17 09:53

我想知道有没有办法在要求文件中告诉pip,安装一个包时要指定最低版本(比如说 pip install package>=0.2),同时还要设置一个最高版本,确保这个版本不会被安装(理论上的用法是 pip install package<0.3)。

我之所以问这个,是因为我在使用一个正在积极开发的第三方库。我希望我的pip要求文件能指定总是安装0.5.x版本系列中最新的小版本,但我又不想让pip尝试安装任何更新的大版本(比如0.6.x),因为它们的接口是不同的。这一点很重要,因为虽然0.6.x版本已经发布,开发者们仍然在对0.5.x版本进行修补和修复,所以我不想在我的要求文件中使用一个固定的 package==0.5.9 行。

有没有办法做到这一点呢?

4 个回答

182

你还可以使用:

pip install package==0.5.*

这样写会更统一,也更容易阅读。

193

一种优雅的方法是使用 ~= 这个兼容版本操作符,具体可以参考 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.*
577

你可以这样做:

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

然后 pip 会寻找最合适的版本,前提是这个版本至少是 0.2,但小于 0.3。

这个规则同样适用于 pip需求文件。想了解版本说明的详细信息,可以查看 PEP 440

撰写回答