Про virtualenv наверное только ленивый не писал :) и не восхвалял бы, как с ним становится легче разрабатывать и поддерживать модули разных версий на python'e. Этот пост не станет исключением, я опишу как ставить этого зверька и дальше использовать в повседневной кухне.
Нужен virtualenv для создания виртуальных окружений python, внутри которых может, например, использоваться другая версия python (не та что установлена в системе как основная), свой, особый, набор модулей и приложений (нужных под конкретную задачу). И нужно оно для того чтобы, например, протестировать новую версию модуля, не засоряя и не конфликтуя с основным набор модулей или создать проект который будет использовать строго выбранный набор модулей и в будущем не планируется его обновление, в то время как модули, установленные в системе, как основные, могут свободно обновляется.
virtualenv
Для начала ставим pip
sudo easy_install -U pip
Ставим virtualenv
sudo pip install virtualenv
Создаем новое окружение:
mkdir ~/environments/ cd ~/environments/ virtualenv --no-site-packages test
Если в операционной системе стоит несколько версий питонов, то virtualenv можно указать какую версию использовать:
virtualenv --no-site-packages -p python2.6 test
Теперь мы можем наполнять новое окружение необходимыми модулями:
Вариант 1:
pip install -E test/ Django
Вариант 2: сначала активируем наше окружение
source test/bin/activate
В начало строки приглашения в терминале должно будет добавится название нашего окружения (test) это значит, что окружение активировалось. Теперь для всего будет использоваться версия python из этого окружения и видны только модули установленные в это окружение.
Ставим нужные модули:
pip install Django
Что-бы выйти из активированного окружения просто набираем
deactivate
virtualenvwrapper
Для еще большего комфорта при работе с virtualenv Doug Hellmann написал расширение virtualenvwrapper, которое делает все манипуляции с окружениям еще проще.
Ставим virtualenvwrapper
sudo easy_install virtualenvwrapper
Создаем папку, где будут лежать все окружения
mkdir ~/.virtualenvs
Добавляем в файл ~/.bashrc следующие содержание
export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
Приминяем изменения:
source ~/.bashrc
Создаем новое окружение:
mkvirtualenv blog
Активируем:
workon blog
Деактивируем
deactivate
Удаляем
rmvirtualenv blog
mod_wsgi
Для работы wsgi с созданным окружением добавляем папку site-packages из этого окружения в видимый путь:
import os, sys sys.path = ['/home/proft/environments', '/home/proft/environments/test/lib/python2.6/site-packages', ] + sys.path os.environ['DJANGO_SETTINGS_MODULE'] = 'test.settings' os.environ['PYTHON_EGG_CACHE'] = '/home/proft/environments/test/.python-eggs' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
cron
Что бы добавить в cron задачу написанную с использованием модулей из созданного окружения надо просто вызвать используемый python из этого окружения:
/home/proft/environments/test/bin/python /home/proft/environments/test/utils/some.py
Дополнительное чтиво