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

我对代码不满意,所以我要求更好的解决方案,最好只使用 stdlib。

编辑

手头的任务有两部分:

  1. 查找符合特定条件(例如名称前缀)的所有发行版。
  2. 查找每个找到的发行版中可用的所有版本。

预期结果是发行版 -> 版本 -> 文件的映射。

有帮助吗?

解决方案 3

其不幸,但由于缺乏其他指标,我需要让我的解决方案XMLRPC的

其他提示

有是XML-RPC接口。见(用于PyPI将旧名)API的 Python.org维基页面上的奶酪店

从维基摘录:

>>> 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_packagespackage_releases似乎是你在寻找什么。

@罗尼的评论

您只需要编写在Python一些代码,以确定哪些所列出的包满足标准;即,如果包名称必须以foo

>>> packages = server.list_packages()
>>> match_foo = [package for package in packages if package.startswith('foo')]
>>> print len(match_foo)
2

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

在哪个访问的PyPI我引脚的版本像这样的附加件:

Products.PloneFormGen == 1.2.5

下面将搜索1.2.5版本的使用该..

不知道,如果它是这款U寻找什么......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top