Как выполнить поиск пакета pip только по имени?

по умолчанию pip ищет как имена пакетов, так и их описания. Для некоторых пакетов это приводит к огромному количеству ложных попаданий, и найти тот, который я действительно хочу, - это боль.

Как я говорю pip, что хочу искать только по имени?

2 ответов


на данный момент это невозможно, потому что текущая реализация (pip 8.1.1) делает name OR summary запрос жестко закодированный в команде поиска pip, хотя PyPI XML RPC поддерживает различные запросы.


ну, на Linux / OSX не трудно сделать что-то полуавтоматическое с немного grep/egrep (OSX, как правило, требует от вас использовать egrep для регулярных выражений, Linux-нет).

поиск ниже возвращает много вещей (41 на самом деле, если вы pip его до wc).

pip search psycopg

первые несколько строк вывода:

gevent-psycopg2 (0.0.3)              - pip-installable package for patching psycopg2 to use gevent
django-psycopg2-pool (0.1.1)         - A db backend for Django using the gevent psycopg2-pool
pg4nosql (0.4.2)                     - A simple psycopg2 based wrapper for nosql like database interaction with python.
zope.psycopgda (1.1.1)               - Psycopg Database Adapter for Zope 3
qmarkpg (0.2)                        - A psycopg2 wrapper using the qmark parameters style

но если вы посмотрите на вывод pip, вы увидите, что поле packaname имеет тенденцию заканчиваться именами версий -psycopg (1.1.21)

Итак, напишите вместо этого:

pip search psycopg | egrep "^.*psycopg.*\("

выход:

gevent-psycopg2 (0.0.3)              - pip-installable package for patching psycopg2 to use gevent
django-psycopg2-pool (0.1.1)         - A db backend for Django using the gevent psycopg2-pool
zope.psycopgda (1.1.1)               - Psycopg Database Adapter for Zope 3
psycopg2-managed-connection (1.0.0)  - Thread-safe connection manager for psycopg2 connections.
db-psycopg2 (0.0.7)                  - psycopg2 driver for db
kr-impatient-psycopg2 (2.5.2.dev0)   - Python-PostgreSQL Database Adapter
tornado-psycopg2 (0.3.1)             - Tornado driver for support asynchronous mode for psycopg2.
psycopg2 (2.6.1)                     - psycopg2 - Python-PostgreSQL Database Adapter
psycopg2-dateutils (0.1)             - Use dateutils.relativedelta to represent PostgreSQL interval types
psycopg2ct (2.4.4)                   - An implementation of the psycopg2 module using ctypes.
psycopgwrap (1.05)                   - A wrapper around psycopg2 to make common things easier.
psycopgda (1.0)                      - Psycopg Database Adapter for Zope 3
psycopg-postgis (0.1.1)              - Pyscopg helpers to work with PostGIS.
psycopg2cffi (2.7.2)                 - .. image:: https://travis-ci.org/chtd/psycopg2cffi.svg?branch=master
psycopg2cffi-compat (1.1)            - A Simple library to enable psycopg2 compatability
little_pger (0.65)                   - A thin layer just a tad above SQL, for use with PostgreSQL and psycopg2, when you want to wrap queries in a convenient way, using plain data structures (but you don't feel like using an ORM, for some reason).
psycopg (1.1.21)                     - Python-PostgreSQL Database Adapter
psycopg2da (2.0.9)                   - Python psycopg2 database adapter for Zope

это предполагает, что в имени пакета нет круглых скобок, конечно.

как многоразовая функция bash (put in .profile или как):

pipsearchpackagename(){
    #a bash function.
    pip search  | egrep "^.*"".*\("
}