Разработчику 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
— вывод списка всех возможных опций с описанием