| Virtualenv |
|
Согласно описанию на странице в Python Package Index: «virtualenv -это инструмент создания изолированной среды Python». Основная задача, которую решает virtualenv, состоит в устранении конфликтов между пакетами. Часто один инструмент требует одну версию некоторого пакета, а другой инструмент - другую версию того же пакета. Это может породить ситуацию, когда будет нарушена работоспособность рабочего веб-приложения, потому что кто-то «случайно» изменит содержимое глобального каталога site-packages, обновив пакет, чтобы получить возможность пользоваться другим инструментом. С другой стороны, разработчик может не иметь права на запись в глобальный каталог site-packages, и тогда он может с помощью virtualenv создать виртуальную среду, изолированную от системной среды Python. Инструмент virtualenv предоставляет отличный способ ликвидировать проблемы еще до того, как они появятся, так как он позволяет создать новую среду, частично или полностью изолированную от глобального каталога site-packages. Инструмент virtualenv также может «развертывать» виртуальную среду, позволяя разработчикам наполнять ее только требуемыми пакетами. По своему действию он очень напоминает buildout, но в отличие от последнего не использует декларативный конфигурационный файл. Следует заметить, что оба инструмента, buildout и virtualenv, очень широко используют библиотеку setuptools, сопровождением которой в настоящее время занимается Филлип Дж. Эби (Phillip J. Eby).
Так как же пользоваться инструментом virtualenv? Самый простой способ — установить его с помощью easy_install: sudo easy_install virtualenv Если вы планируете использовать virtualenv только с одной версией Python, такой подход вполне оправдывает себя. Если у вас установлено несколько версий Python, например, Python 2.4, Python 2.5, Python 2.6 и, возможно, Python 3000, и при этом они установлены в один и тот же каталог bin, такой как /usr/bin, тогда лучше будет использовать иной подход, поскольку в один и тот же каталог можно установить только один сценарий virtualenv. Один из способов получить несколько сценариев virtualenv, работающих с разными версиями Python, состоит в том, чтобы просто загрузить последнюю версию virtualenv и создать псевдонимы для каждой версии Python. Ниже описывается, как это сделать: 1.curl http://sun.colorstudy.com/virtualenv/trunk/virtualenv.py
> virtu- 2. sudo cp virtualenv.py /usr/local/bin/virtualenv.py
3. Создать два псевдонима в командной оболочке bash или zsh: Создав среду с несколькими сценариями, можно двинуться дальше и создать несколько контейнеров virtualenv, по одному для каждой версии Python, которые нам потребуются. Ниже показано, как это делается.
Создание виртуальной среды Python 2.5:
Создание виртуальной среды Python 2.4: Если внимательно взглянуть на вывод команд, можно заметить, что virtualenv создал каталоги bin и lib. Внутри каталога bin находится интерпретатор python, который использует каталог lib как собственный локальный каталог site-packages. другой заметной особенностью является наличие предустановленного сценария easy_install, что позволяет устанавливать пакеты в виртуальную среду. Наконец, важно отметить, что существует два способа работы с созданной виртуальной средой. Можно запустить виртуальную среду, явно указав полный путь к интерпретатору:
Или можно использовать сценарий activate, находящийся в каталоге bin требуемой виртуальной среды, чтобы активировать эту среду без ввода полного пути. Это дополнительный способ, который вы можете использовать, но он не является обязательным, так как вы всегда можете ввести полный путь к требуемой виртуальной среде. Дуг Хелл-манн (Doug Hellmann), один из рецензентов этой книги, написал интересный сценарий, доступный по адресу: http://www.doughellmann.com I'projectsI'virtualenvwrapper/. Он использует сценарий activate и меню на языке bash, которое позволяет выбирать, какая среда должна быть запущена. Создание собственных виртуальных окружений Версия virtualenv 1.0, которая была текущей на момент написания этой книги, включает поддержку создания сценариев развертывания собственных виртуальных окружений. Добиться этого можно с помощью функции virtualenv.create_bootstrap_script(text). Эта функция создает сценарий развертывания, который по своему действию напоминает virtualenv, но обладает расширенными возможностями анализа параметров с помощью функций, определяемых пользователем, extend_parser() и adjust_options(), и позволяет вbinолнять действия после установки с помощью функции after_install(). Давайте посмотрим, насколько просто создать собственный сценарий развертывания, который установит virualenv и заданный набор пакетов в новую среду. Возьмем опять в качестве примера пакет liten. Мы можем с помощью virtualenv создать совершенно новую виртуальную среду и установить в нее пакет liten. В примере 9.7 показано, как создается сценария развертывания собственной виртуальной среды, который устанавливает пакет liten.
Этот сценарий является измененной версией примера из документации к virtualenv и здесь особое внимание следует обратить на последние две строки:
Пример 9.7. Пример сценария ,развертывающего новую виртуальную среду
В двух словах, эти строки предписывают функции after_install() вbinолнить запись в новый файл с именем liten-bootstrap.py, расположенный в текущем рабочем каталоге, и затем с помощью easy_install установить модуль liten. Важно отметить, что этот фрагмент программного кода создаст файл bootstrap.py, который затем будет использоваться при запуске. После запуска этого сценария мы получим файл liten-bootstrap.py, который потом можно передать разработчику или конечному пользователю. Если запустить сценарий liten-bootstrap.py без параметров, от него будет получен следующий вывод:
Если запустить этот сценарий, указав ему каталог назначения, будет получен следующий вывод:
Наш интеллектуальный сценарий автоматически создал среду с нашим модулем. Если теперь запустить инструмент liten с полным путем к виртуальной среде, мы получим следующее:
Этот прием стоит того, чтобы знать о нем, так как он позволяет создавать полностью изолированную и развернутую виртуальную среду. Мы надеемся, что в этом разделе нам удалось показать одно из основных преимуществ virutalenv - его простоту в использовании и изучении. Больше, чем что бы то ни было, virtualenv почитает священное правило KlsS (keep its syntax simple - сохраняй синтаксис как можно проще), и одной этой причины уже достаточно, чтобы подумать об использовании этого инструмента для управления изолированными средами разработки. Если у вас имеются дополнительные вопросы, касающиеся этого инструмента, обязательно посетите почтовую рассылку virtualenv по адресу http://groups.google.com/group/python-virtualenv/.
Related Articles
Set as favorite
Bookmark
Email This
Hits: 488 Комментарии (0)RSS feed CommentsНаписать комментарий |