пятница, 20 июля 2012 г.

Знакомимся с virtualenv (Перевод)


Виртуальное окружение может быть очень полезно для тестирования программ. Ian Bicking создал проект  virtualenv, который и является инструментом для создания изолированного окружения Python. Вы можете использовать эти окружения для проверки новых версий ваших программ, новых версий пакетов, которые Вы используете или просто в качестве песочницы для новых пакетов. Кроме того, Вы можете использовать virtualenv в качестве рабочего места в случаях, если Вы не можете копировать файлы в site-packages по какой-либо причине. Когда Вы создаёте виртуальное окружение при помощи virtualenv, он создаёт папку и копирует Python в неё с папкой site-packages и несколькими другими. Кроме того устанавливается pip. Пока активно ваше виртуальное окружение оно используется как обычный Python. Когда же Вам оно перестаёт быть нужным - Вы просто удаляете папку. И всё. Или можете продолжать её использовать для работы.
В этой статье мы потратим немного времени для знакомства с virtualenv.

Установка

Для начала понадобится установить virtualenv. Вы можете использовать для этого pip или easy_install или просто загрузить файл virtualenv.py с их сайта и просто использовать его. На данный момент предположим, что ваша папка Python находится в системном пути поиска и Вы можете использовать  virtualenv в командной строке.

Создаём виртуальное окружение

Для создания песочницы выполните следующую команду:

python virtualenv.py FOLDER_NAME
Где FOLDER_NAME - это имя папки, которую Вы будете использовать в качестве песочницы. На моём компьютере Windows 7, я добавил папку C:\Python26\Scripts в путь поиска так что я могу использовать команду virtualenv.py FOLDER_NAME без слова python. Если Вы не укажете имя папки, то получите в ответ список опций, которые можно передать скрипту. Давайте создадим проект с названием sandbox. Как его использовать? Для начала надо его активировать:
На POSIX системах Вам нужно source bin/activate тогда как на Windows Вам нужна команда \путь_к_песочнице\Scripts\activate. Давайте пройдём через эти шаги. Песочницу создадим на рабочем столе:

C:\Users\mdriscoll\Desktop>virtualenv sandbox
New python executable in sandbox\Scripts\python.exe
Installing setuptools................done.
Installing pip...................done.

C:\Users\mdriscoll\Desktop>sandbox\Scripts\activate
(sandbox) C:\Users\mdriscoll\Desktop>

Вы можете заметить что как только Вы активировали ваше виртуальное окружение, Вы увидите в приглашении командной строки префикс с названием папки для вашей песочницы (в нашем случае - “sandbox”). Так Вы можете определить, используется ли песочница или нет. После этого Вы можете использовать pip для установки пакетов в ваше виртуальное окружение. Когда закончите работать просто вызовите команду декативации для того, чтобы выйти из виртуального окружения.
Есть несколько флагов, которые Вы можете передать скрипту virtualenv при создании виртуального окружения. Например, можно использовать –system-site-packages для переноса пакетов из установки Python. Если Вы хотите использовать distribute вместо setuptools, можете использовать флаг –distribute.
virtualenv так же предоставляет способ просто установить библиотеки, но использовать их при помощи стандартного Python. Согласно документации, для этого Вам надо лишь написать специальный скрипт. Подробнее смотрите тут.
Кроме того, есть экспериментальный флаг –relocatable который можно использовать для того, чтобы сделать папку переместимой. Однако, на данный момент, это не работает на Windows.
Наконец, есть флаг –extra-search-dir, который можно использовать, чтобы сохранить ваше виртуальное окружение оффлайн. Это позволяет Вам добавить папку в путь поиска, по которому pip или easy_install будет искать пакеты для установки, даже если у Вас нет доступа к интернету.

Итог

К этому времени Вы должны уметь сами использовать virtualenv. Есть несколько других проектов, которые теперь могут Вам пригодиться. Есть библиотека Doug Hellman’а virtualenvwrapper, которая облегчает создание, удаление и управление виртуальных окружений. Есть zc.buildout, который похож на virtualenv и является его конкурентом. Я рекомендую посмотреть их и изучить - они могут помочь Вам в вашей работе.

2 комментария: