17 Создание и использование виртуальной среды

virtualenv является инструментом для создания изолированных сред Python. Эта программа создает папку, которая содержит все необходимые исполняемые файлы для использования пакетов, необходимых для проекта Python.

Установка инструмента virtualenv

Это требуется только один раз. virtualenv программа может быть доступна через распределение. На Debian-подобных дистрибутивов, пакет называется python-virtualenv или python3-virtualenv .

В качестве альтернативы вы можете установить virtualenv с помощью пип :

 $ pip install virtualenv

 

Создание новой виртуальной среды

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

 $ virtualenv foo

 

Это создаст foo папку , содержащую оснастку сценариев и копию python самого двоичного файла. Название папки не имеет значения. После того , как виртуальная среда создана, она является самодостаточной и не требует дальнейшей манипуляции с virtualenv инструментом. Теперь вы можете начать использовать виртуальную среду.

Активация существующей виртуальной среды

Чтобы активировать виртуальную среду, некоторые оболочки магии требуется , чтобы ваш Python является один внутри foo вместо системы один. Это цель activate файл, который вы должны источник в текущую оболочку:

 $ source foo/bin/activate

 

Пользователи Windows должны набрать:

 $ foo\Scripts\activate.bat


 

После того, как виртуальная среда была активирована, python и pip исполняемых файлов и все скрипты , установленные модули сторонних те внутри foo . В частности, все модули , установленные с pip будут развернуты в виртуальной среде, что позволяет содержимого среды разработки. Активация виртуальной среды также должна добавить префикс к вашему приглашению, как показано в следующих командах.

 # Installs 'requests' to foo only, not globally
(foo)$ pip install requests

 

Сохранение и восстановление зависимостей

Чтобы сохранить модули , которые вы установили через pip , вы можете перечислить все эти модули (и соответствующие версии) в текстовый файл с помощью freeze команды. Это позволяет другим быстро установить модули Python, необходимые для приложения, с помощью команды install. Условное название для такого файла requirements.txt :

 (foo)$ pip freeze > requirements.txt
(foo)$ pip install -r requirements.txt

 

Обратите внимание , что freeze находится список всех модулей, в том числе переходных зависимостей , необходимых модулей верхнего уровня , которые Вы устанавливали вручную. Таким образом , вы можете предпочесть ремесло requirements.txt файл вручную , поставив только модули верхнего уровня вам нужно.

Выход из виртуальной среды

Если вы закончили работу в виртуальной среде, вы можете отключить ее, чтобы вернуться к обычной оболочке:

 (foo)$ deactivate

 

Использование виртуальной среды на общем хосте

Иногда это не представляется возможным $ source bin/activate в virtualenv, например , если вы используете mod_wsgi долевой хоста или если у вас нет доступа к файловой системе, как и в Amazon API Gateway, или Google AppEngine. Для тех случаев , вы можете развернуть библиотеки, установленные в вашем virtualenv и пропатчить sys.path .

Luckly virtualenv поставляется с скрипт , который обновляет и ваш sys.path и ваш sys.prefix

 import os

mydir = os.path.dirname(os.path.realpath(__file__))
activate_this = mydir + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this)) 

Вы должны добавить эти строки в самом начале файла, который будет выполнять ваш сервер.

Найдет bin/activate_this.py что virtualenv созданный файл в той же директории вы выполняете и добавить свои lib/python2.7/site-packages для sys.path

Если вы хотите использовать activate_this.py скрипт, не забудьте развернуть с, по крайней мере, в bin и lib/python2.7/site-packages каталогов и их содержимого.

# Встроенные виртуальные среды Начиная с Python 3.3, [модуль venv] (https://docs.python.org/3/library/venv.html) будет создавать виртуальные среды. Команда `pyvenv` не требует отдельной установки: $ pyvenv foo $ source foo / bin / activ или $ python3 -m venv foo $ source foo / bin / activ