вторник, 30 ноября 2010 г.

Памятка для virtualevn, virtualenvwrapper and pip

Установка пакетов с помощью easy_install:

$ sudo easy_install virtualenv
$ sudo easy_install pip
$ sudo easy_install virtualenvwrapper


Добавить в ~/.bashrc:
# Путь к корневой директории виртульных окружений
export WORKON_HOME=$HOME/py_virtual_envs

# Для Arch этот путь отличается от стандартного
# /usr/local/bin/virtualenvwrapper_bashrc
source /usr/bin/virtualenvwrapper_bashrc


Теперь надо чтобы настройки вступили в действие:
$ source ~/.bashrc


Создание нового окружения - команда mkvirtualenv <имя окружения> или mkvirtualenv --no-site-packages <имя окружения>

Проверка:
$ workon
*
$ mkvirtualenv temp
New python executable in temp/bin/python
Installing setuptools............done.
$ workon
temp
$ mkvirtualenv temp2
New python executable in temp2/bin/python
Installing setuptools............done.
$ workon
temp
temp2
$ workon temp


Переход в директорию текущего виртуального окружения:
$ cd $VIRTUAL_ENV
$ pwd
/home/beast/py_virtual_envs/temp

$ workon temp2
$ cd $VIRTUAL_ENV
$ pwd
/home/beast/py_virtual_envs/temp2


Или можно использовать команду cdvirtualenv
$ workon temp
$ cdvirtualenv
$ pwd
/home/beast/py_virtual_envs/temp2

$ cdvirtualenv include/python2.6/
$ pwd
/home/beast/py_virtual_envs/temp/include/python2.6


отключение виртульного окружения
$ deactivate


Удаление виртуального окружения
$ rmvirtualenv temp
$ rmvirtualenv temp2


Опции mkvirtualenv передаются напрямую в virtualenv
$ mkvirtualenv --no-site-packages temp3


есть быстрый переход к текущей директории site-packages
$ cdsitepackages
$ pwd
/home/beast/py_virtual_envs/temp3/lib/python2.6/site-packages
$ ls -l
итого 352
drwxr-xr-x 3 beast beast   4096 Мар 13 21:13 .
drwxr-xr-x 4 beast beast   4096 Мар 13 21:13 ..
-rw-r--r-- 1 beast beast    237 Мар 13 21:13 easy-install.pth
drwxr-xr-x 4 beast beast   4096 Мар 13 21:13 pip-0.6.3-py2.6.egg
-rw-r--r-- 1 beast beast 333447 Мар 13 12:53 setuptools-0.6c11-py2.6.egg
-rw-r--r-- 1 beast beast     30 Мар 13 21:13 setuptools.pth


Есть команда для добавления директорий с пакетами - add2virtualenv <директория>
$ add2virtualenv ~/py_virtual_envs/temp3/temp/
Warning: Converting "/home/beast/py_virtual_envs/temp3/temp/" to "/home/beast/py_virtual_envs/temp3/temp"
$ python
Python 2.6.4 (r264:75706, Jan 25 2010, 09:01:01)
[GCC 4.4.2 20091208 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import additional_package
>>> additional_package.NAME
'Additional package'
^D
$ cat ./temp/additional_package/__init__.py
NAME="Additional package"
$ add2virtualenv ~/py_virtual_envs/temp3/temp/
$ add2virtualenv
Usage: add2virtualenv dir [dir ...]

Existing paths:
/home/beast/py_virtual_envs/temp3/temp


Просмотр установленных пакетов:
$ lssitepackages
easy-install.pth  pip-0.6.3-py2.6.egg  setuptools-0.6c11-py2.6.egg
setuptools.pth  virtualenv_path_extensions.pth

virtualenv_path_extensions.pth:
/home/beast/py_virtual_envs/temp3/temp

В ~/.bashrc можно так же добавить:
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
# Это позволит pip определить текущее виртуальное окружение
# и устанавливать в него без использования параметра -E

2 комментария:

Unknown комментирует...

Значит так. Статья хорошая, но устарела. Как результат - те версии пакетов, что ставятся по умолчанию уже настроенные на 3 питон и просто не устанавливаются нормально. Думаю было бы неплохо подправить статью, добавив в неё совместимые версии пакетов для 2питона и возможно, дописать сценарии для 3 питона(это опционально и при возможности - насколько мне известно, пока еще не все зависимости портировали в 3 питон).
Так и живем.

3BEP комментирует...

Не имеет смысла. virtualenv отжил свое и сейчас изолированное окружение легко создается с помощью vagrant.