对于每个python包,您可以指定list of classifiers。其中有一个Topic
分类器,它将包放在指定的类别中,可以是browsed on PyPI
。
例如,numpy
包含以下主题:
Topic :: Software Development
Topic :: Scientific/Engineering
有没有办法使用pip search
或其他第三方库以编程方式按主题搜索?
答案 0 :(得分:14)
您可以使用XMLRPC API方法通过browse()
按分类器搜索PyPI:
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
包含满足“主题::软件开发”和“主题::科学/工程”分类器的所有包的[package, version]
列表:
>>> {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
}
......等等。