Что такое виртуальное окружение? Зачем оно? Какие бывают аналоги?

Роман

8-й уровень

Что это такое

Виртуальное окружение - это изолированное окружение среды (в нашем случае это окружение Python), которое позволяет нам использовать определенные версии приложений.

Зачем оно мне?

Предположим, сейчас ты работаешь над несколькими проектами одновременно, и для каждого из них по тем или иным причинам есть свои определенные особенгсти версий пакетов. Например, на одном проекте у тебя Джанга 1.10, на втором - 1.8 , а на третьем - 1.5, да и в придачу Питон 2-й версии. При этом версии приложений менять ну никак нельзя - придется много чего переделывать да и вообще. Вот для таких ситуаций нам как раз и пригодитя виртуальное окружение, позволяющее использовать разные версии приложений.

Что использовать

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

Virtualenv

virtualenv - стандартный пакет для работы с виртуальным окружением. Используется вместе с virtualenvwrapper для более удобной работы. Установить и ознакомиться подробнее можно в энциклопедии Девмана

Аналоги

Хоть venv и является самым популярным выбором, существуют другие не менее интересные варианты.

Pyenv

Инструмент, позволяющий изолированно использовать различные версии Python. Например, если тебе нужно запустить твой код на разных версиях Питона (2.6, 2.7, 3.3...), то это то, что тебе нужно. Для создания полноценного изолированного окружения следует использовать пакет pyenv-virualenv, позволющий пользоваться pyenv и virtualenv одновременно. Список команд с их описанием здесь(на английском).

Установка

Клонируем репозиторий

git clone https://github.com/yyuu/pyenv.git ~/.pyenv

Устанавливаем переменные окружения (если у вас Linux, /.bash_profile меняем на ```/.bashrc )

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

Инициализируем загрузку pyenv в терминале

echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

Перезапускаем терминал

Команды

Устанавливаем Питон

pyenv install 2.7.9
pyenv install 3.4.3

Делаем rehash после установки

pyenv rehash

Задаем версию Питона для определенной директории. Версия хранится в файле .python-version

pyenv local 2.7.6

Задаем версию глобально. Будет заменена в случае, если задан файл .python-version

pyenv global 3.3.2

Conda

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

Установка

Установим пакет Miniconda - это всего лишь conda и ее зависимости. Скачиваем файл по ссылке. Запускаем файл в терминале

bash Miniconda3-latest-Linux-x86_64.sh

, ждем завершения установки, перезапускаем терминал. ЧТобы убедиться в том, что установка произошла успешно, выполни conda list. Если все хорошо, ты увидишь пакеты, которые были установлены.

Работа с виртуальным окружением

Создаем виртуальное окружение

conda create -n yourenvname python=x.x

Активируем

source activate yourenvname

Деактивируем

source deactivate

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

conda remove -n yourenvname -all

Установку пакетов можно произвоздить как с помощью conda, так и pip. Pip устанавливается вместе с зависимостями.