Разработка на 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