Categories: Python

python-virtualenv/

Поскольку все новые скрипты я теперь пишу на Python , а опыт использования этого языка у меня довольно скромный, время от времени я узнаю занятные вещи, которые многим другим программистам и так давно известны. Так, например, недавно я научился пользоваться virtualenv и virtualenvwrapper. И на случай, если я вдруг подзабуду, как это делается, решил вот написать эту небольшую шпаргалку.

Примечание: Даже если вы не особо интересуетесь программированием на Python, вы можете столкнуться с необходимостью использования сторонних проектов, написанных на этом языке. Взять к примеру тот же Graphite . Поэтому знание того, как в мире Python принято работать с зависимостями, мало кому повредит.

Какую проблему решает virtualenv? По умолчанию pip устанавливает пакеты как бы глобально. Большую часть времени это работает нормально, особенно если пишите вы небольшие скрипты, не имеющие огромного количества зависимостей. Но если у вас в несколько больших проектов, в которых используется что-то тяжелое и ломающее обратную совместимость между релизами (мне пока что удавалось избегать подобных проблем, но не удивлюсь, если этим грешит, скажем, Django) такое поведение становится проблемой.

Так вот, virtualenv — это инструмент, позволяющий создавать виртуальные окружения с пакетами. Разные «песочницы» (согласитесь, напоминает sandbox’ы в Cabal ) имеют разный набор пакетов разных версий. Работая над конкретным проектом, вы просто переключаетесь на подходящую песочницу, и проблема уходит. Заметьте, что в отличие от того, как это сделано в некоторых других языках программирования, одну и ту же песочницу можно смело использовать сразу в нескольких проектах. Плюс к этому уходит проблема засорения системы ненужными пакетами, так как песочницы можно легко создавать и удалять. Как я это вижу, программируя на Python в третьем тысячелетии, вообще все нужно делать через virtualenv!

Установка virtualenv и virtualenvwrapper, предоставляющего чуть более удобный интерфейс к virtualenv:

sudo pip3 install virtualenv virtualenvwrapper

В ~/.bashrc дописываем:

export VIRTUALENVWRAPPER_PYTHON = / usr / bin / python3
source / usr / bin / virtualenvwrapper.sh

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

mkvirtualenv env-name

Смотрим список окружений:

workon

Меняем окружение:

workon env-name

Выходим из окружения:

deactivate

Удаляем окружение:

rmvirtualenv env-name

Находясь в одном из окружений, можно ставить пакеты через pip, как обычно:

pip3 install flask

Список зависимостей проекта, насколько я смог разобраться, принято сохранять в файл с именем requirements.txt:

pip3 freeze > requirements.txt

Этот подход позволяет одной командой установить все зависимости, необходимые проекту:

pip3 install -r requirements.txt

Как видите, все довольно просто.

Со временем статья может немного потерять актуальность. За самой свежей информацией обращайтесь к официальной документации по virtualenv и virtualenvwrapper .

admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

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

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago