如何列出pip中所有可用的包版本?
如果你有一个可以用pip安装的Python包的名字,有没有办法找到pip能安装的所有版本的列表呢?现在只能靠试错来找。
我想为一个第三方库安装一个特定版本,但最新的版本太新了,里面有一些不兼容的改动。所以我想要一个pip知道的所有版本的列表,这样我就可以测试一下。
30 个回答
你不需要额外的第三方软件包就能获取这些信息。pypi为所有包提供了简单的JSON数据源。
https://pypi.org/pypi/{PKG_NAME}/json
下面是一些只用标准库的Python代码,可以获取所有版本的信息。
import requests
from distutils.version import LooseVersion
def versions(package_name, limit_releases=10):
url = f"https://pypi.org/pypi/{package_name}/json"
data = requests.get(url).json()
versions = list(data["releases"].keys())
versions.sort(key=LooseVersion, reverse=True)
return versions[:limit_releases]
print("\n".join(versions("typeguard")))
这段代码的输出结果是(截至2023年7月21日):
4.0.0rc6
4.0.0rc5
4.0.0rc4
4.0.0rc3
4.0.0rc2
4.0.0rc1
4.0.0
3.0.2
3.0.1
3.0.0rc2
对于pip 版本大于等于 21.2,请使用:
pip index versions pylibmc
请注意,这个命令还在实验阶段,未来可能会有所变化!
对于pip 版本大于等于 21.1,请使用:
pip install pylibmc==
对于pip 版本大于等于 20.3,请使用:
pip install --use-deprecated=legacy-resolver pylibmc==
对于pip 版本大于等于 9.0,请使用:
$ pip install pylibmc==
Collecting pylibmc==
Could not find a version that satisfies the requirement pylibmc== (from
versions: 0.2, 0.3, 0.4, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5, 0.6.1, 0.6,
0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.7, 0.8.1, 0.8.2, 0.8, 0.9.1, 0.9.2, 0.9,
1.0-alpha, 1.0-beta, 1.0, 1.1.1, 1.1, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.3.0)
No matching distribution found for pylibmc==
这个命令会列出可用的版本,但不会实际下载或安装任何软件包。
对于pip 版本小于 9.0,请使用:
pip install pylibmc==blork
其中blork
可以是任何字符串,但它不能是有效的版本号。
(更新:截至2020年3月,很多人反映通过 pip install yolk3k
安装的 yolk 只返回最新版本。Chris的回答 似乎获得了最多的赞同,并且对我有效)
在pastebin上的脚本确实可以用。不过如果你在多个环境或主机上工作,这就不太方便,因为每次都得复制或创建这个脚本。
一个更好的解决方案是使用 yolk3k,可以通过pip安装。比如,想查看有哪些Django的版本可以用:
$ pip install yolk3k
$ yolk -V django
Django 1.3
Django 1.2.5
Django 1.2.4
Django 1.2.3
Django 1.2.2
Django 1.2.1
Django 1.2
Django 1.1.4
Django 1.1.3
Django 1.1.2
Django 1.0.4
yolk3k
是原版 yolk
的一个分支,原版在2012年停止了开发。虽然 yolk
不再维护(在下面的评论中有提到),但 yolk3k
似乎在继续更新,并且支持Python 3。
注意:我并没有参与yolk3k的开发。如果有什么地方不太好用,留言可能没有太大帮助。 请使用 yolk3k的问题反馈系统,如果可能的话,考虑提交一个修复方案。