#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
}
… и т.д.