如何pip安装一个包的最新补丁号?

How do I pip install the latest patch number of a package?

如何在主要-次要版本中 pip 安装软件包的最新补丁号版本。 假设我想要 1.10 的最新补丁版本,所以如果有 1.10.8、1.10.9、1.11.3 可用,我想获得 1.10.9。

说明:我不想安装特定的包,我想安装一个范围内的最新包。上面我想要 1.10.0 <= x < 1.11.0 范围内的最新包

安装特定版本的包

pip install <package_name> == <version number>

例如

pip install openpyxl==2.6.0

尝试以下操作:

pip install 'SomeProject>=1,<2'

示例:

pip install 'some_package>=1.10.0,<1.11.0'

查看 pip documentation 以获得更详细的说明。

pip支持~=version specifier指定版本号,所以

pip install package~=1.10.0

如果 1.10.9 是该软件包的最新补丁级别,将安装版本 1.10.9。

文档中有更详细的解释和与其他实现相同结果的方法的比较,例如:

~= 2.2.0

相当于

>= 2.2.0, == 2.2.*

如果您已经安装了 packagecompatible 版本,user3850 接受的答案将不会升级到最新补丁(根据我的经验,就是这样)。

例如我安装了 django 1.9.8 并想升级到最新的补丁,即 1.9.13,但是 pip install django~=1.9.0(或 pip install django~=1.9)告诉我 requirement already satisfied(使用 pip 18.0)。

因此,在这种情况下我们需要添加 --upgrade。有两个选项适合我:

  1. pip install django~=1.9.0 --upgrade

还有一个我觉得更易读的(基于 this answer):

  1. pip install django==1.9.* --upgrade

如果使用第一个选项 (~=),请确保包含 "micro" 版本号(如 "major.minor.micro")。例如,pip install django~=1.9.0 --upgrade 会根据需要升级到 1.9.13,但 pip install django~=1.9 --upgrade(即没有 .0)会升级到 1.11.15

注意:缺少下限,例如=>1.9.8,在选项 2 中应该不是问题,因为无论如何升级都会给我们最新的匹配。