【问题标题】:pypi see older versions of package [duplicate]pypi 查看旧版本的软件包 [重复]
【发布时间】:2014-09-26 01:39:53
【问题描述】:

这是我感兴趣的包:

https://pypi.python.org/pypi/django-filebrowser-no-grappelli/

但是最新版本不再支持 Django 1.3。我需要找到一个版本。 如何查看旧版本列表?

【问题讨论】:

  • 似乎没有更旧的包可用,仅那个包就有 2 年的历史了
  • 你真的应该考虑升级你的 Django 版本。 1.3 多年来一直不受支持。
  • Grappelli 2.3.9 需要 Django 1.3 。来源:django-grappelli.readthedocs.org/en/2.3.9
  • 问题标题是通用的。其他来这里的人可能想为不同年龄的不同图书馆解决类似的问题。

标签: python django pypi


【解决方案1】:

您可以使用这个简短的 Python 3 脚本通过 JSON API 从 PyPI 获取包的可用版本列表:

#!/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

【讨论】:

    【解决方案2】:

    使用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
    

    【讨论】:

    • 这对我来说是最好的,为此筹集了赏金。但是,我仍然认为这是一种解决方法,pip 应该有一个明确的选项来列出所有可用的版本。
    【解决方案3】:

    这在 pypi 的新 UI 中可见:

    https://pypi.org/project/<package>/#history
    

    例如:

    https://pypi.org/project/django-filebrowser-no-grappelli/#history
    

    【讨论】:

    • 这个新的用户界面非常好用。
    • 这应该是公认的答案。
    【解决方案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%
    

    【讨论】:

      【解决方案5】:

      可能有点不雅,不过貌似可以去网址

      https://pypi.python.org/simple/<package>
      

      您将获得大量指向该软件包的 tarball 的链接。

      例如:

      https://pypi.python.org/simple/django-filebrowser-no-grappelli/
      

      【讨论】:

      • This Works.. 但 PYPI 最好也添加一个链接以访问旧包。
      • 这是一个优雅的想法,虽然
      • @tan 这很不优雅,因为您绕过了普通的图形界面,并且,作为人类,请求一个旨在由代码使用的页面(例如,pip 可能使用本页)。
      【解决方案6】:

      如果你使用pip 来安装你的包,那么你可以使用:

      pip install yolk
      yolk -V django-filebrowser-no-grappelli
      

      不幸的是,唯一可用的版本似乎是:

      django-filebrowser-no-grappelli 3.1.1
      

      但是,您可以尝试在 Internet 上找到另一个版本并通过以下方式安装:

      pip install -Iv <url_package>
      

      【讨论】:

        猜你喜欢
        • 2020-04-19
        • 2018-05-09
        • 2015-07-19
        • 2014-06-23
        • 2014-04-06
        • 2018-04-11
        • 1970-01-01
        • 2018-08-03
        • 1970-01-01
        相关资源
        最近更新 更多