Python Virtualenv предназначен для создания виртуального окружения (далее просто "окружение") для вашего проекта. К примеру, вашему проекту нужен отличный от установленного python или какие-либо библиотеки отличных версий, вы можете создать общее окружение для нескольких проектов или по одному собственному для каждого проекта. Тем самым вы сможете устанавливать, изменять и удалять пакеты, и это не повлияет на другие ваши проекты или системное окружение.
В статье рассматривается версия 1.7.1.2
Установка
Для начала надо его установить в вашу систему, через PyPI:
$ sudo pip install virtualenv
$ sudo easy_install virtualenv
Или через Debian, Ubuntu:
$ sudo apt-get install python-virtualenv
Или через FreeBSD:
$ cd /usr/ports/evel/py-virtualenv
$ make install clean
Использование
Для начала рассмотрим самые полезные возможности, остальные вы можете посмотреть в man virtualenv:
--no-site-packages
Запретить использование системного site-packages (для полной изоляции вашего окружения от системы). Например у вас в системе установлена "Django 1.3", если вы будете использовать эту опцию, то в созданном окружении эта "Django" не будет доступна.
В текущих версиях virtualenv эта опция используется по умолчанию, можете её не указывать.
--system-site-packages
Эта опция противоположна предыдущей, то есть заставляет окружение использовать установленные в системе пакеты, если не нашлись онные в окружении.
-p PYTHON_EXE, --python=PYTHON_EXE
Вы можете указать нужную вам версию интерпретатора python, при этом он должен быть установлен в системе. Если вы опустили эту опцию, то будет использоваться умолчательный (Выполните which python чтобы узнать какой он у вас, но скорее всего это будет /usr/bin/python).
--distribute
Использовать Ditribute.
Опция используется по умолчанию.
--setuptools
Использовать Setuptools поверх Ditribute. Вы можете установить переменную окружения вашей системы VIRTUALENV_SETUPTOOLS, чтобы Setuptools стал умолчательным вместо Ditribute.
$ export VIRTUALENV_SETUPTOOLS=true
--extra-search-dir=SEARCH_DIRS
Указанные директории будут использовать для поиска в них пакетов при установке через setuptools/distribute/pip. Это подходит в случае когда вы не хотите их устаналивать из PyPI.
Подробное описание тут.
--never-download
Не использовать сеть для получения пакетов. Используется совместно с --extra-search-dir=SEARCH_DIRS.
Подробное описание тут.
--relocatable
Сделать существующее окружение относительным, то есть после этого вы сможете перемещать каталог с окружением и оно не будет зависеть от своего места дислокации, но опция в данный момент экспериментальная.
Подробное описание тут.
--prompt=PROMPT
Выводимое имя окружения (подсказка), например вы можете создать с названием (MY_VENV):
$ virtualenv --prompt="(MY_VENV)" <venv_name>
source venv/bin/activate
(MY_VENV)$
--clear
Используется для очистки существующего окружения от пакетов и прочих изменений.
Создаем общее окружение (для нескольких проектов) без использования системного site-packages:
$ mkdir ~/venv && cd ~/venv
$ virtualenv --no-site-packages <venv_name>
Часто я создаю окружение непосредственно в каталоге проекта:
$ cd ~/work/<project_name>
$ mkdir venv && echo "Virtualenv directory" > venv/README
$ git add venv && echo "/venv/" >> .gitignore && git add -f .gitignore
$ virtualenv --no-site-packages --prompt="(<project_name>)" <venv_name>
После того как вы установили новое окружение, у вас будет следующая структура:
~/venv/<venv_name>
├── bin
│ ├── activate
│ ├── easy_install
│ ├── pip
│ ├── python
│ └── ...
├── include
│ └── python2.7 -> /usr/include/python2.7
├── lib
│ └── python2.7
│ ├── distutils
│ │ └── ...
│ ├── site-packages
│ │ └── ...
│ └── ...
└── local
├── bin -> /home/username/venv/<venv_name>/bin
├── include -> /home/username/venv/<venv_name>/include
└── lib -> /home/username/venv/<venv_name>/lib
Таким образом вам сразу же доступны изолированные python, pip и easy_install.
Работа с окружением
Для начала работы вам следует активировать окружение так:
$ source ~/venv/<venv_name>/bin/activate
$ python manage.py
Для окончания работы с окружением (например для переключение на системный python) следует выполнить в командной строке:
$ deactivate
Вы также можете запустить python по абсолютному пути (это может пригодится например в cron):
$ ~/venv/<venv_name>/bin/python manage.py
Установка пакетов в окружение
Надо активировать окружение и запустить pip или easy_install:
$ source ~/venv/<venv_name>/bin/activate
$ pip install <something>
$ easy_install <something>
Также через pip вы можете установить не активируя окружение:
$ pip install -E ~/venv/<venv_name> <something>
Комментариев нет:
Отправить комментарий