在PyPI上查看包的旧版本
我感兴趣的这个包是:
Django filebrowser no Grappelli
不过,最新的版本已经不再支持Django 1.3了。我需要找一个支持这个版本的旧版。请问我该怎么查看旧版本的列表呢?
6 个回答
4
把下面的代码保存到get_version.py这个文件里:
import json
import sys
import urllib2
from distutils.version import LooseVersion
name = sys.argv[1]
resp = urllib2.urlopen("https://pypi.python.org/pypi/{}/json".format(name))
data = json.load(resp)
for ver in sorted([LooseVersion(version) for version in data["releases"].keys()]):
print ver.vstring
运行这个文件,你就能得到一个所有软件包版本的排序列表:
python get_version.py %PACKAGE-NAME%
8
使用 pip
命令,你可以查看这个软件包的所有可用版本:
pip install django-filebrowser-no-grappelli==randomwords
这样做会显示出所有可用的软件包版本:
Could not find a version that satisfies the requirement
django-filebrowser-no-grappelli==randomwords
(from versions: 3.1.1, 3.5.6, 3.5.7, 3.5.8, 3.6.1, 3.6.2, 3.7.0, 3.7.1, 3.7.2)
No matching distribution found for
django-filebrowser-no-grappelli==randomwords
13
你可以使用这个简短的Python 3脚本,从PyPI获取一个包的可用版本列表,方法是使用JSON API:
#!/usr/bin/env python3
import sys
import requests
from pkg_resources import parse_version
def versions(pkg_name):
url = f'https://pypi.python.org/pypi/{pkg_name}/json'
releases = requests.get(url).json()['releases']
return sorted(releases, key=parse_version, reverse=True)
if __name__ == '__main__':
print(*versions(sys.argv[1]), sep='\n')
示例:
$ python versions.py django-filebrowser-no-grappelli
3.7.8
3.7.7
3.7.6
3.7.5
3.7.4
3.7.3
3.7.2
3.7.1
3.7.0
3.6.2
3.6.1
3.5.8
3.5.7
3.5.6
3.1.1
39
在新的pypi界面中,这一点是可以看到的:
https://pypi.org/project/<package>/#history
举个例子:
https://pypi.org/project/django-filebrowser-no-grappelli/#history
85
这可能有点不太优雅,但你可以访问这个网址
https://pypi.python.org/simple/<package>
然后你会看到一堆这个软件包的压缩文件链接。
比如:
https://pypi.python.org/simple/django-filebrowser-no-grappelli/