在PyPI上查看包的旧版本

72 投票
6 回答
21731 浏览
提问于 2025-04-18 15:48

我感兴趣的这个包是:

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/

撰写回答