Разработка на Python с использованием virtualenv

Virtual Environment - полезный инструмент, который позволет держать различные конфигурации зависимостей проектов в разных директориях. Например он решает проблему когда одному приложению требуется версия 1.0 пакета X, а другому - 2.0.

vitrualenv

Главным инструментов будет virtualenv.

$ sudo yum install python-virtualenv

Использование

Создадим окружение

$ cd project_dir  
$ virtualenv proj_env

Этими командами мы создадим папку proj_env, которая будет содержать наше новое окружение. В этой папке будет набор скриптов и копия интерпретатора python, который будет использоваться в окружении (окружение использует свой интерпретатор, а не общесистемный).

При создании окружения можно указать, какая версия python нам нужна.

Возможно, что в системе параллельно стоит как python2, так и python3. Выбирать версию при создании окружения мы можем ключем -p. Если ключ не указан, то будет выбрана версия /usr/bin/python.

$ virtualenv -p /usr/bin/python3.4 proj_env

Для того, чтобы попасть в наше новое окружение используем

$ source proj_env/bin/activate

Теперь мы внутри окружения.

Определеить это можно по изменившемуся приглашению:

(proj_env)тут_старое_приглашение_из_$PS1

Все. Мы внутри окружения. Можно ставить зависимости для нашего приложения.

$ pip install flask flask-bootsrap rq rq-scheduler pymysql

Выйти из окружения можно при помощи

$ deactivate

Теперь мы попали обратно в систему с дефолтными интерпретаторами.

Сохранение информации о зависимостях

Опция –no-site-packages отключает использование глобально-установленных пакетов, что может быть полезно (сейчас это дефолтное поведение virtualenv).

Хорошей идей будет сохранить информацию об установленных в окружении пакетов.

{code lang=”shell”]$ pip freeze > requirements.txt


После развертывание окружения в новой системе можно поднять все пакеты сразу.

```shell
$ pip install -r requirements.txt

Не забываем добавить папку окружения в .gitignore.

virtualenverapper

Еще один полезный инструмент (скорее для разработчиков, а не для деплоя), который позволяет обращаться со со множеством окружений и переключаться между ними.

$ sudo yum install python-virtualenvwrapper

Применение

Добавляем в .bashrc

export WORKON_HOME=~/.envs  
source /usr/bin/virtualenvwrapper.sh

Теперь можно создавать окружения.

$ mkvirtualenv proj_env

Активировать окружения.

$ workon proj_env

Выходить из окружения можно так же как это делалось в кготом virtualenv.

$ deactivate

Удалять окружения.

$ rmvirtualenv proj_env

При этом все папки окружений будет расположены в одном месте: папке, которая задана через $WORKON_HOME.

Дополнительные команды

Есть несколько дополнительных команд

  • lsvirtualenv - покажет список созданных окружений
  • cdvirtualenv - перейдет непосрественно в папку окружения
  • cdsitepackages - переведет в site-packages выбранного окруженияч
  • lssitepackages - сделает ls для папки site-packages

Посмотреть полный список команд.

autoenv

Утилита позволяет активировать окружение при входе в папку, и деактивировать при выходе.

$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv  
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc

Категории: Разработка HowTo