2014-06-18 3 views
16

Für jedes Python-Paket können Sie eine list of classifiers angeben. Unter anderem gibt es einen Klassifikator, der das Paket in die angegebenen Kategorien legt, die browsed on PyPI lauten können.Suche PyPI nach Thema

Zum Beispiel numpy hat folgende Themen:

Topic :: Software Development 
Topic :: Scientific/Engineering 

Gibt es eine Möglichkeit thema programmatisch pip search oder andere Drittanbieter-Bibliotheken zu suchen?

+0

'pip search' sollte ein "thematisch"suchen sind! – gaborous

Antwort

14

Sie können über die XMLRPC API, mit der browse() Methode PyPI von Klassifikator suchen:

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", 
]) 

Im obigen Beispiel enthält packages eine Liste von [package, version] Listen für alle Pakete, die erfüllen sowohl die „Topic :: Software Entwicklung“und‚Thema :: Scientific/Engineering‘Klassifizierer:

>>> {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' 
} 

Von dort aus können Sie mehr Informationen zu einem bestimmten Release abrufen:

>>> 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 
} 

... etc.