Установка virtualenv

Разработчику Python в работе для каждого проекта нужно отдельное окружение. Если бы было доступно только одна глобальная среда, то приходилось бы для каждого проекта ее изменять и очень скоро в ней накопилось бы много лишних библиотек. В Unix-системах дело осложняется еще и тем, что Python используется для работы операционной системы, поэтому такие эксперименты рано или поздно закончатся печально.

Благодаря virtualenv мы можем создавать неограниченное количество изолированных окружений, чтобы работать над разными проектами на рабочей машине или запускать несколько django-сайтов на боевом сервере.

В этом посте будут описаны основные моменты установки виртуального окружения.

Установка virtualenv

Сам инструмент virtualenv устанавливается глобально из PyPi

sudo pip install virtualenv

Если нужна последняя неопубликованная dev-версия, то берем отсюда

sudo pip install https://github.com/pypa/virtualenv/tarball/develop

Установка нового виртуального окружения

Для создания окружения существует одна основная команда

virtualenv ENV

где ENV — каталог, в котором будет расположено новое виртуальное окружение. При этом как правило создаются:

  • папки ENV/lib/ и ENV/include/, где находятся вспомогательные файлы; библиотеки виртуального окружения помещаются в ENV/lib/pythonX.X/site-packages/.
  • ENV/bin, где будет лежать интерпретатор Python. Таким образом, запуск скрипта с шебангом #! /path/to/ENV/bin/python исполнит его в данном виртуальном окружении, а не в системном по умолчанию.
  • Необходимые для дальнейшей работы инструменты pip и setuptools доступны сразу, что позволяет в дальнейшем легко устанавливать другие пакеты, при этом pip запускается из ENV/bin/pip.

Активация окружения

source bin/activate
_

Это добавит в начало $PATH директорию bin/, делая доступным все ее содержимое, — ничего другого данная команда не делает. После активации в начале приглашения командной строки появится имя окружения в скобках (ENV) $

Если запускать программы непосредственно из этой папки bin/, тогда даже не потребуется активация. Данная особенность полезна, например, когда мы настраиваем сайты в связке с uwsgi или gunicorn.

Отменить эффект активации можно командой

deactivate

В Windows создаются соответствующие bat-скрипты с такими же именами.

Удаление окружения

Деактивируем и просто удаляем папку с виртуальным окружением

rm -r /path/to/ENV

Некоторые часто используемые опции

--system-site-packages

Если устанавливать окружение командой virtualenv --system-site-packages ENV, тогда оно сделает доступными все пакеты, установленные глобально. Если вам нужно строго изолировать окружение от глобальной системы, просто не используйте этот флаг.

--python=PYTHON

Если в системе установлено несколько версий Python и вы хотите установить окружение с версией, отличной от версии по умолчанию (например, /usr/bin/python), то укажите вместо PYTHON полный путь к интерпретатору.

--help — вывод списка всех возможных опций с описанием