gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:26 26 4
gpt4 key购买 nike

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

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

编辑

手头的任务有两个部分:

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

预期结果是分布 -> 版本 -> 文件的映射。

最佳答案

有一个 XML-RPC 接口(interface)。查看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_packagespackage_releases似乎正是您要找的东西。

@Ronny 的评论

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

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

关于python - 在 pypi 包索引上查找包版本的优雅方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/646515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com