четверг, 19 июля 2012 г.

Python 101: pip –замена для easy_install (Перевод)


Pip Installs Python или pip - это инструмент для установки и управления пакетами Python, многие из которых расположены на Python Package Index (PyPI). Он является альтернативой easy_install. В этой статье мы потратим немного времени на то, чтобы посмотреть, как он работает и как он может помочь нам в нашей работе с Python.

Установка

Для работы Вам потребуется distribute или setuptools. Если Вы работаете с Python 3, тогда ваш единственный выбор - distribute, так как setuptools на данный момент ещё не портирован на эту версию. На сайте  pip есть установщик, так то вы можете использовать get-pip.py или просто перейти на PyPI и скачать исходники.
Как Вы уже знаете, для установки большинства модулей из исходников необходимо распаковать полученный архив, перейти в его папку и запустить в ней команду “python setup.py install”. Обратите внимание, что для установки могут понадобиться права администратора. На сайте pip рекомендуется использовать pip в virtualenv, поскольку в таком случае он устанавливается автоматически, “не требует прав администратора и не изменяет вашу установку Python”. Но это на ваш выбор.

использование pip

Чаще всего pip используют для установки, обновления или удаления пакетов. Все эти процедуры описаны на официальном сайте, но мы по ним всё равно пройдёмся. Так как мы упомянули про virtualenv, давайте и установим его при помощи pip:

pip install virtualenv
Если Вы запустите эту команду в терминале, Вы увидите что-то вроде этого:

Downloading/unpacking virtualenv
Downloading virtualenv-1.7.2.tar.gz (2.2Mb): 2.2Mb downloaded
Running setup.py egg_info for package virtualenv
warning: no previously-included files matching '*' found under directory 'do
cs\_templates'
warning: no previously-included files matching '*' found under directory 'do
cs\_build'
Installing collected packages: virtualenv
Running setup.py install for virtualenv
warning: no previously-included files matching '*' found under directory 'do
cs\_templates'
warning: no previously-included files matching '*' found under directory 'do
cs\_build'
Installing virtualenv-script.py script to C:\Python26\Scripts
Installing virtualenv.exe script to C:\Python26\Scripts
Installing virtualenv.exe.manifest script to C:\Python26\Scripts
Installing virtualenv-2.6-script.py script to C:\Python26\Scripts
Installing virtualenv-2.6.exe script to C:\Python26\Scripts
Installing virtualenv-2.6.exe.manifest script to C:\Python26\Scripts
Successfully installed virtualenv
Cleaning up...
Похоже, что работает. Обратите внимание, что pip загружает пакет ДО начала установки, чего не делает easy_install (за другими отличиями обращайтесь к этому сравнению). Давайте теперь предположим, после того, как Вы установили virtualenv, вышла новая версия и вы хотите её обновить. Нет ничего проще!

pip install --upgrade virtualenv
Я же говорил! С другой стороны, если Вы любите работать без песочницы - можно легко её удалить:
pip uninstall virtualenv
Да, вот так просто.
Pip так же может производить установку из указанной папки, URL или из системы контроля версий, такой как Subversion, Git, Mercurial и Bazaar. Смотрите в документацию.

Другие возможности pip

Pip так же позволяет Вам создавать конфигурационные файлы, в которых можно хранить опции командной строки в INI-похожем формате. Об этом можно почитать тут. К сожалению, похоже, что pip ищет эти конфиги ТОЛЬКО в определённом месте, так что вы не сможете использовать различные конфигурации для pip.
Другая возможность, которую я хотел бы подчеркнуть, это концепция файлов необходимости (requirements files). Эти файлы  - просто список пакетов, которые необходимо установить. Они являются хорошим способом установки пакетов со всеми их зависимостями определённых версий. Вы даже можете добавить список опциональных библиотек и поддерживаемых инструментов. Если Вы хотите знать, что установлено на данный момент - Вы можете "заморозить" установленные пакеты в requirements file:

pip freeze myrequirements.txt
Это очень полезно для работы с virtualenv, так как наверняка у Вас установлено МНОГО пакетов, которые никак не связаны с вашим текущим проектом. И это ещё одно соображение, почему работать с virtualenv - хорошая идея.

Итог

Теперь Вы знаете достаточно для того, чтобы начать использовать pip. Это очень полезный инструмент для работы с пакетами. Наслаждайтесь!

2 комментария:

  1. Есть мнение, что pip - таки не замена для easy_install. pip, например, не умеет ставить бинарники.

    ОтветитьУдалить
    Ответы
    1. Коммент из будущего. :) - "К сожалению, некоторое время спустя сообщество разделилось, и часть его провозгласила смерть бинарных форматов и 'яиц' в частности. После этого pip, замена easy_install, перестал принимать egg-формат."

      Удалить