среда, 9 марта 2011 г.

python and virtualenv

В общем поведаю я тебе о них сегодня. Причины использования virtualenv могут быть разными, но для начала. Что такое virtualenv? Если вкратце, то это набор программ и библиотек для запуска питон-проектов в виртуальное окружении. Да, конечно можно сделать chroot. Но этот вариант много проще в разработке и поддержке.
Чем этот вариант понравился мне. Вот например есть у нас какая-нибудь библиотек, причем она в активной разработке. На базе этой библиотеки строится ряд программ. В процессе разработки часто ломается обратная совместимость, а так же зависимости от внешних библиотек. А программки, которые работают на этой библиотеки делаются не в один день и используют разные её версии. И вот тут подкрадывается тихий ужас (он же маленькая белая сибирская лисичка). Для того, что бы новая программа заработала, нужна свежая версия библиотеки, но если её поставить, то скорее всего рухнут все старые программы. Причем рефакторинг старого кода может быть очень дорогой задачей и заказчик просто не захочет этой процедуры (его право).
Ну и что, поставим на новый комп. А вот беда. Сайт - это то же программа. И так просто такую процедуру не сделаешь (ну в общем это просто, но только умеючи).
В общем тут нам на помощь приходит virtualenv
Установим:
apt-get install virtualenv
Создадим новое окружение:
virtualenv ve
У нас появится каталог, его структуру можно внимательно изучить.
можем запустить python:
ve/bin/python
А можем установить вкусности:
ve/bin/easy_install pip
ve/bin/pip install django django-any django-jenkins

Причем установить мы можем вполне конкретную версию всего по.

Так же, часто в процессе тестирование возникает желание потестить код в разных версиях python.
Вот как создать окружение с определенной версией python
virtualenv -p python2.5 ve

Так же, для удобства работы, можно активировать окружение
source ve/bin/activate
тогда уже можно просто говорить pip install <чего-то там>
Что бы выйти из окружения можно сказать exit, но лучше deactivate.

Да, что самое важное, что виртуальное окружение легко переносится на другой сервер. И практически не требует ни каких манипуляций.

Комментариев нет: