Краткий ликбез по Virtual Environments в Python 2.7

👁 69 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Virtual Environment или виртуальная среда — это инструмент, который позволяет держать и хранить зависимости, требуемые для различных проектов в разделенных хранилищах, которые образуются созданием виртуальных сред. Это может решить проблему, когда проекту X, требуется утилита от версии 1.x, а проекту Y требует эта же утилита, но с версией 4.x. Это позволяет держать и сохранять вашу глобальную директорию пакетов чистым от хаоса и мусора версий утилит и позволяет легко управлять различными версиями утилит в локальной среде.

Для примера, вы работает с проектом, который требует Django 1.3, которому также необходим проект, который требует Django 1.0 и виртуальные среды в Python дают такую возможность.

Инструмент virtualenv

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

virtualenv устанавливается через pip:

pip install virtualenv

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

Создаем виртуальную среду для проекта:

cd my_project_folder
virtualenv venv

Команда virtualenv venv должен создать папку в текущей директории, в котором должны находиться исполняемые файлы Python и копии библиотек pip, которых вы можете использовать для установки других пакетов. Имя виртуальной среды( в нашем случае, это venv) может быть любым. Если не вводить имя, то все эти выполняемые файлы будут находиться в текущей директории без добавления в подпапку.

Это создаст копию Python в любой директории, где запустите эту команду, положит его в папку под именем venv.

Вы также можете использовать версию интерпретатора

virtualenv -p /usr/bin/python2.7 venv

 

Данная команда будет использовать интерпретатор в директории /usr/bin/python2.7

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

Перед началом использования виртуальной среды необходимо сначала ее активировать командой:

source venv/bin/activate

Название текущей виртуальной среды должно появиться в правой части командной строки запроса (т.е. (venv) Your-Computer: your_project UserName$), чтобы вы знали, что она сейчас активна. С текущего момента, любой пакет, который вы установите при помощи pip должен быть перемещен в папку venv, который изолирован от глобальной инсталляции Python.

Устанавливаем пакеты как обычно:

pip install requests

Деактивация виртуальной среды Python

Если вы завершили работу с виртуальной средой, то можете сделать выход из нее, задав команду деактивации

deactivate

Это произведет обратный выход из виртаульной среды к интерпретатору системы по умолчанию со всеми его установленными библиотеками.

Удаление виртуальной среды Python

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

rm -rf venv

Через некоторое время вы, возможно, столкнетесь с множеством виртуальных сред, засоренных в вашей системе, и, возможно, вы забудете их имена или место их размещения.

Дополнительные замечания

Запуская команду virtualenv с опцией —no-site-packages не будут включены пакеты, которые установлены глобально. Это может быть полезно для сохранения списка пакетов в случае, если к нему нужно получить доступ позже. [Это поведение по умолчанию для virtualenv 1.7 и поздних.]

Заморозка пакетов виртуальной среды Python

Чтобы ваша среда была последовательной, рекомендуется «заморозить» текущее состояние пакетов среды. Для этого запустите

pip freeze > requirements.txt

Эта команда создаст файл requirements.txt, который будет содержать простой список пакетов в текущей среде и их соответствующие версии. Тем самым, вы сможете посмотреть список установленных пакетов без требуемого формата, используя “pip list”.

Импорт пакетов виртуальной среды Python

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

pip install -r requirements.txt

Это может помочь обеспечить согласованность между установками, между развертками и между разработчиками.

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

Инструмент virtualenvwrapper

virtualenvwrapper предоставляет набор команд, которые делают работу с виртуальными средами более приятным и продуктивным. Он также размещает все ваши виртуальные среды в одном месте.

Для установки(перед этим проверьте, что у вас установлен virtualenv)

pip install virtualenvwrapper
export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh

После этих команд все виртуальные среды будут создаваться в глобальной директории /root/Evns/.

(Тут полная инструкция по установка virtualenvwrapper.)

Для Windows. Для пользователей Windows есть специфичная версия под названием virtualenvwrapper-win.

pip install virtualenvwrapper-win

В Windows путь path для WORKON_HOME является %USERPROFILE%/Envs

Создаем среду при помощи команд virtualenvwrapper

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

mkvirtualenv venv

Это создаст папку виртуальной среды venv внутри ~/Envs.

Работа над виртуальной средой при помощи команд virtualenvwrapper

workon venv

Альтернативно вы можете создать проект, который создаст виртуальную среду, а также директорию проекта внутри $PROJECT_HOME

mkproject myproject

virtualenvwrapper предоставляет таб-завершение на именах среды. Это реально помогает вам, когда у вас много сред и есть вероятность забыть их имена

Деактивация при помощи команд virtualenvwrapper

Деактивация по-прежнему остается неизменной

deactivate

 

Удаление при помощи команд virtualenvwrapper

Удаление

rmvirtualenv venv

 

Другие полезные команды virtualenvwrapper

1) Список всех сред

lsvirtualenv

2) Переход в директорию текущей активной среды, так вы сможете увидеть ее site-packages, к примеру

cdvirtualenv

3) Похож, как и выше, но заходить внутрь site-packages  активной текущей среды

cdsitepackages

4) Покажет содержимое директории site-packages

lssitepackages

 

Тут полный список всех остальных полезных команд модуля virtualenvwrapper.

 

Инструмент virtualenv-burrito

С virtualenv-burrito вы можете иметь рабочую комбинированную среду virtualenv + virtualenvwrapper в одной команде.

Инструмент autoenv

Модуль autoenv позволяет при переходе в директорию, которая содержит .env автомагически активировать среду.

Установка в Linux

git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc

 

Установка в Mac через brew

brew install autoenv

 

Список источников

  1. Virtual Environments