按主题搜索PyPI

18 投票
1 回答
858 浏览
提问于 2025-04-18 10:14

每个Python包都可以指定一个分类列表。其中有一个叫做Topic的分类,它可以把这个包放到一些特定的类别中,这些类别可以在PyPI网站上浏览

比如,numpy就有以下这些主题:

Topic :: Software Development
Topic :: Scientific/Engineering

有没有办法通过编程的方式,比如用pip search或者其他第三方库,来按主题搜索呢?

1 个回答

16

你可以通过 XMLRPC API 来按分类搜索 PyPI,使用 browse() 方法:

try:
    import xmlrpclib  # Python 2
except ImportError:
    import xmlrpc.client as xmlrpclib  # Python 3

pypi = xmlrpclib.ServerProxy('http://pypi.python.org/pypi')

packages = pypi.browse([
    "Topic :: Software Development",
    "Topic :: Scientific/Engineering",
])

在上面的例子中,packages 包含了一个列表,这个列表里有所有符合 "Topic :: Software Development" 和 "Topic :: Scientific/Engineering" 这两个分类的包和版本信息:

>>> {pkg: ver for pkg, ver in packages if "numpy" in pkg}
{
    'nose-numpyseterr': '0.1',
    'msgpack-numpy': '0.3.2',
    'numpy': '1.8.1',
    'idx2numpy': '1.0b'
}

接下来,你可以获取关于某个特定版本的更多信息:

>>> release = pypi.release_data('numpy', '1.8.1')
>>> release['download_url']
'http://sourceforge.net/projects/numpy/files/NumPy/'
>>> release['platform']
'Windows,Linux,Solaris,Mac OS-X,Unix'
>>> release['downloads']
{
    'last_day': 5818,
    'last_month': 187688,
    'last_week': 44764
}

... 等等。

撰写回答