按主题搜索PyPI

ale*_*cxe 16 python pip package-managers pypi

对于每个python包,您可以指定分类器列表.其中有一个Topic分类器,它将包放在可以浏览PyPI的指定类别中.

例如,numpy有以下主题:

Topic :: Software Development
Topic :: Scientific/Engineering
Run Code Online (Sandbox Code Playgroud)

有没有办法按编程方式使用主题pip search或其他第三方库进行搜索?

Zer*_*eus 14

您可以使用以下方法通过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",
])
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,packages包含[package, version]满足"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'
}
Run Code Online (Sandbox Code Playgroud)

从那里,您可以检索有关给定版本的更多信息:

>>> 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
}
Run Code Online (Sandbox Code Playgroud)

...等