代码之家  ›  专栏  ›  技术社区  ›  Ronny

在pypi包索引上查找包版本的优雅方法是什么?

  •  4
  • Ronny  · 技术社区  · 16 年前

    目前,我正在使用一种基于正则表达式的非常丑陋的方法来查找链接并将其拆开。

    编辑

    手头的任务分为两部分:

    1. 查找每个找到的发行版中可用的所有版本。

    4 回复  |  直到 16 年前
        1
  •  2
  •   cdleary    16 年前

    有一个XML-RPC接口。见 Python.org wiki page on Cheese Shop (old name for PyPi) API

    >>> import xmlrpclib
    >>> server = xmlrpclib.Server('http://pypi.python.org/pypi')
    >>> server.package_releases('roundup')
    ['1.1.2']
    >>> server.package_urls('roundup', '1.1.2')
    [{'has_sig': True, 'comment_text': '', 'python_version': 'source', 'url': 'http://pypi.python.org/packages/source/r/roundup/roundup-1.1.2.tar.gz', 'md5_digest': '7c395da56412e263d7600fa7f0afa2e5', 'downloads': 2989, 'filename': 'roundup-1.1.2.tar.gz', 'packagetype': 'sdist', 'size': 876455}, {'has_sig': True, 'comment_text': '', 'python_version': 'any', 'url': 'http://pypi.python.org/packages/any/r/roundup/roundup-1.1.2.win32.exe', 'md5_digest': '983d565b0b87f83f1b6460e54554a845', 'downloads': 2020, 'filename': 'roundup-1.1.2.win32.exe', 'packagetype': 'bdist_wininst', 'size': 614270}]
    

    list_packages package_releases

    @罗尼的评论

    您只需要用Python编写一些代码来确定列出的包中哪些满足标准;i、 e.如果包名称必须以开头 foo :

    >>> packages = server.list_packages()
    >>> match_foo = [package for package in packages if package.startswith('foo')]
    >>> print len(match_foo)
    2
    
        2
  •  1
  •   merwok    13 年前

    我们将在短期内向PyPI发布distutils2。它包含一个distutils2.pypi模块,允许您从Python代码中搜索pypi,还包含一个pysetup程序,它是一个命令行脚本,用于执行相同的操作(以及其他操作)。文档仍在进行中,但有一些示例和API参考:

        3
  •  0
  •   Ronny    12 年前

    不幸的是,由于其他索引上缺少xmlrpc,我需要保留我的解决方案

        4
  •  -1
  •   Gomez    16 年前

    在访问pypi i pin版本的构建中,如下所示:

    产品.PloneFormGen==1.2.5

    不知道这是不是你想要的。。。