Expertus metuit
Установка питоновских пакетов локально
Опубликовано 2016-07-16 в 09:20

В unix-системе питоновские пакеты совсем не обязательно нужно ставить в системные каталоги (в /usr/, например). Благодаря virtualenv, пакеты можно установить в любой каталог, инициализировать локально окружение в терминале через специальный скрипт и дальше пользоваться всеми установленными в том каталоге библиотеками и программами. Локальный набор пакетов очень удобен для разработчика, так как позволяет на одной системе переключаться между разными их версиями.

В статье я описываю не только концепт, но и всю процедуру подготовки локального окружения. Сразу же уточнение: всё работает только в терминале, то есть вы запускаете терминал, «активируете» в нём нужный каталог с пакетами и дальше в этом терминале работаете. Базовая операционная система — linux, *bsd или mac os x. Windows я не рассматриваю.

Итак, нам понадобится установленный системно python3. Для линукса он ставится из пакетов вашего репозитория, для макоси — скачивается с офсайта https://www.python.org/downloads/mac-osx/. На данный момент последняя версия — 3.5.2, её и ставим. В принципе, версия из brew тоже сойдёт.

Локальный каталог, куда мы всё будем ставить, — ~/.local-pyvenv, я его делаю скрытым, так как он нам в явном виде практически никогда не понадобится, плюс мешаться в списке файлов не будет.

Для начала удалим этот каталог на всякий случай, если он существует.

[user@shell]$ rm -rf ~/.local-pyvenv

Дальше нам нужно установить virtualenv. В случае ubuntu/debian это можно сделать командой apt install virtualenv, для макоси пакет можно установить системно через pip, однако мы пойдём другим путём и установим всё локально.

[user@shell]$ pip3 install -t /tmp/ttt virtualenv
[user@shell]$ python3 /tmp/ttt/virtualenv.py ~/.local-pyvenv
[user@shell]$ rm -rf /tmp/ttt

Каталог, куда мы временно поставили virtualenv (/tmp/ttt), мы удаляем, он нам больше не понадобится.

Теперь у нас есть готовое локальное окружение с «установленным» питоном, перед началом использования его нужно «активировать». Активация по сути переписывает переменные окружения типа $PATH и добавляет туда пути из ~/.local-pyvenv с более высоким приоритетом, чем системный. Вот как это делается:

[user@shell]$ source ~/.local-pyvenv/bin/activate
(.local-pyvenv) [user@shell]$ 

Обратите внимание, в приглашении терминала появилась новая строка (.local-pyvenv), она вам всегда будет напоминать, что вы находитесь в «активированном» окружении и часть программ и библиотек теперь будет в первую очередь искаться в каталоге .local-pyvenv, а не в системных. Чтобы убедиться в этом, запустите такой код:

[user@shell]$ which python3
/Users/sigsergv/.local-pyvenv/bin/python3

В активированном окружении теперь можно ставить пакеты и программы через pip3 и они все будут ставиться не в системные каталоги, а в ~/.local-pyvenv. При этом вы можете свободно находиться в любом каталоге, а не в ~/.local-pyvenv.

В дальнейшем сценарий работы такой:

  1. Запускаем новую сессию в терминале
  2. Активируем рабочее окружение командой source ~/.local-pyvenv/bin/activate
  3. Работаем как обычно

«Деактивировать» окружение можно из текущей сессии командой deactivate, она возвращает все изменённые переменные окружения на место.

Комментарии

Текст комментария (допустимая разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com>) Посетители-анонимы, обратите внимение, что более чем одна гиперссылка в тексте (включая оную из поля «веб-сайт») приведёт к блокировке комментария для модерации. Зайдите на сайта с использованием аккаунта на twitter, например, чтобы посылать комментарии без этого ограничения.
Имя (обязательно, 50 символов или меньше)
Опциональный email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2024 Sergey Stolyarov | Работает на pyrengine