Поиск PyPI по теме

#python #pip #package-managers #pypi

#python #pip #менеджеры пакетов #pypi

Вопрос:

Для каждого пакета python вы можете указать список классификаторов. Среди прочего есть Topic классификатор, который помещает пакет в указанные категории, которые можно просматривать PyPI .

Например, numpy содержит следующие разделы:

 Topic :: Software Development
Topic :: Scientific/Engineering
  

Есть ли способ поиска по теме программно с использованием pip search или других сторонних библиотек?

Комментарии:

1. pip search должен включать поиск «по теме»!

Ответ №1:

Вы можете искать PyPI по классификатору через API XMLRPC, используя 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 содержит список [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
}
  

… и т.д.

Комментарии:

1. XmlRpc устарел