[Sysadmins] [ANN] python-module-virtualenv

Max Ivanov =?iso-8859-1?q?ivanov=2Emaxim_=CE=C1_gmail=2Ecom?=
Вс Сен 21 10:21:41 MSD 2008


Добрый день!
Подсмотрев на новом альтовом форуме тему про "как узнать кто
использует мои пакеты?" озадачился и решил подойти к этому вопросу со
стороны донесения информации до пользователей, т.е. буду потихоньку
делать анонсы своих пакетов.

======================================================================
Имя: python-module-virtualenv
Оф. документация: http://pypi.python.org/pypi/virtualenv
======================================================================
Virtualenv - это средство создания независимых Python окружений.
Работает просто:
`virtualenv.py /path/to/dir` после чего в указанном вами каталоге
будут установлены:
- копия python (симлинками)
- python-setuptools
- скрипт easy_install
- sh-скрипт активации окружения activate

Из прав требует только права на запись в каталог, т.е. любой
пользователь где-нибудь у себя в $HOME может без проблем создать себе
такую python-песочницу.

Все исполняемые файлы располагаются в /path/to/dir/bin/ , если вы
активно хотите использовать какое-либо одно окружение, то вместо того,
чтобы набирать полный путь можете воспользоваться скриптом activate,
он не исполняемый, его надо подключать через команду "source
/path/to/dir/bin/activate", это сделает выбранное вами окружение
активным для текущего шелла. Отключить тоже просто: просто наберите в
шелле deactivate и все вернется на место.

Работосопособность песочницы не зависит от activate, т.е. все что
будет вызвано (не важно как) из /path/to/dir/bin/* будет работать
только с этой песочницей, в том числе и сам python, который
расположиться в /path/to/bin/python. Особенно такое поведение полезно
в случае скрипта easy_install.

Если вы работаете с Python, то наверняка знаете что, например
`easy_install Twisted` вытянет из интернета Twisted и все его
зависимости. Раньше для этого необходимы
были root права или шаманство с переменными окружения, чтобы он не
ставил софт в системные каталоги, теперь достаточно создать песочницу
при помощи virtualenv
и ставить все в нее. Это избавляет вас от необходимости пинать
маинтэйнеров python-module* чтобы они обновили наконец то, что вам
надо, вы в этом вопросе
становитесь независимыми от дистрибутива (но это не значит, что ваша
песочница сможет безболезненно переехать на другой дистрибутив!).
Конечно, если софт
использует системные библиотеки (например пакет lxml использует
libxml2 и libxslt), то вам по-прежнему надо поставить эти библиотеки в
систему при помощи
apt-get, также понадобятся заголовочные файлы (libxml2-devel,
libxslt-devel) и компилятор, чудес не бывает и virtualenv не сделает
это за вас :)

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

easy_install ищет и скачивает софт с http://pypi.python.org, который
не всегда там есть, но абсолютное большенство python софта упаковано
при помощи setuptools, а значит может быть установлено через скриптт
setup.py. Т.е. вам необходимо скачать с сайта интересующего вас
проекта архив с последней версией,
распаковать во временный каталог, перейти в него и выполнить
/path/to/env/bin/python setup.py install

Вкратце все. За бортом остались такие вопросы, как управление
наследованием от системного python и создание песочниц внутри скрипта,
а не при помощи коммандной строки. Об этом можно прочитать в оф.
документации.


Подробная информация о списке рассылки Sysadmins