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

I ask because I am using a third party library that's in active development. I'd like my pip requirements file to specify that it should always install the most recent minor release of the 0.5.x branch, but I don't want pip to ever try to install any newer major versions (like 0.6.x) since the API is different. This is important because even though the 0.6.x branch is available, the devs are still releasing patches and bugfixes to the 0.5.x branch, so I don't want to use a static package==0.5.9 line in my requirements file.

有什么办法可以做到吗?


当前回答

一种优雅的方法是根据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.*

其他回答

一种优雅的方法是根据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.*

nok.github。Io /pipdev是一个供开发人员测试定义的说明符以进行版本处理的交互式工具。

与问题相关:nok.github.io/pipdev?spec=~=0.5.0&vers=0.6

你可以:

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

pip将寻找最佳匹配,假设版本至少是0.2,小于0.3。

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

你还可以使用:

pip install package==0.5.*

更一致,更容易阅读。