Существует несколько способов установки пакетов для языка python. Наиболее распространенным и удобным является менеджер пакетов pip. В этой статье я перечислю основные возможности и команды этой утилиты.
Установка pip
Для версии python 2.7.9 и новее (для python2 ветки), and python 3.4 и новее pip уже укомплектован в дистрибутив.
Для более старых версий python и Debian-like систем установка запустится следующей командой:
1 | sudo apt-get install python-pip |
Для Fedora:
1 | sudo yum install python-pip |
Установка пакетов с помощью pip
Установка в общем виде выглядит так:
1 | pip install SomePackage |
В данном случае будет установлена последняя версия пакета <SomePackage>. Можно установить пакет определенной версии:
1 | pip install SomePackage==1.2 |
С помощью команды freeze создается файл со списком уже установленных пакетов и их версиями:
1 | pip freeze > requirements.txt |
Это очень удобно при развертывании проекта на другой машине. Установка всех пакетов в таком случае будет проведена с помощью одной команды:
1 | pip install -r requirements.txt |
Также можно устанавливать пакеты через git.
1 | pip install git+git://github.com/user/foo.git@v1.0.3 |
Или через svn:
1 | pip install -e svn+svn://svn.repo/some_pkg/trunk/#egg=SomeProject |
Можно устанавливать загруженные на локальную машину пакеты:
1 | pip install ~/Downloads/SomePackage-1.4.tar.gz |
Просмотреть список уже установленных пакетов можно с помощью команды list:
1 | pip list |
Обновление пакетов
Обновить пакет до последней версии можно командой:
1 | pip install --upgrade SomePackage |
Поиск пакетов
Искать нужный пакет для установки можно по имени или по регулярному выражению:
1 | pip search "query" |
Удаление пакетов
Удаляется пакет так:
1 | pip uninstall SomePackage |
Списки пакетов можно найти, например, здесь.
На практике для разных проектов часто используются различные версии пакетов и держать их вместе на одной машине очень затруднительно. Virtualenv решает эту проблему изолированием пакетов друг от друга в рамках отдельных виртуальных окружений. Об этом способе я расскажу в одном из следующих постов.