2

Есть ли способ сделать AND для поисковых терминов в поиске в пипсах?

Например, делать:

pip search django toolbar

Кажется, он показывает все пакеты, связанные с django, даже если они не имеют ничего общего с панелью инструментов.

Лучшее, что я могу сделать, это обойти:

pip search django toolbar | grep toolbar | grep django

ОБНОВИТЬ:

это лучше:

pip search toolbar | grep django

и делает мой вопрос бесполезным

1 ответ1

2

Короче говоря, вы не можете.

После установки pip я взглянул на site-packages/pip-1.2.1-py2.6.egg/pip/commands/search.py , в котором реализована команда search .

Он использует интерфейс XML-RPC для PyPi, который задокументирован по адресу http://wiki.python.org/moin/PyPiXmlRpc.
Мы видим, что следом поиска является search(spec[, operator]) . Примечания к документации:

Аргументы для разных полей объединяются с использованием либо "и" (по умолчанию), либо "или". Пример: search ({'name': 'foo', 'description': 'bar'}, 'или'). Результаты возвращаются в виде списка dicts {'name': имя пакета, 'version': версия выпуска пакета, 'summary': сводка выпуска пакета}

Потрясающие! Так вот где мы определяем оператор поиска! А and даже по умолчанию!

Теперь вернемся к search.py ...

def search(self, query, index_url):
    pypi = xmlrpclib.ServerProxy(index_url, pip.download.xmlrpclib_transport)
    hits = pypi.search({'name': query, 'summary': query}, 'or')
    return hits

И здесь мы видим, что 'or' жестко закодировано.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .