При управлении проектом Python приходит время отделять пакеты Python от основной среды. Могут быть несовместимые версии, которые раздражают друг друга и вызывают причудливые ошибки.

Чтобы избежать этого, вам необходимо создавать виртуальные среды, и исторически virtualenv был лишь инструментом для этого во вселенной Python.

Виртуальная среда - это инструмент, который помогает разделять зависимости, необходимые для разных проектов, путем создания для них изолированных виртуальных сред Python.

Когда и где использовать виртуальную среду?

Предположим, что мы работаем над двумя проектами python с использованием некоторого пакета «X» (X может быть Django, flask и т. Д.). В одном из проектов используется X версии V1, а в другом - X версии V2. В этой ситуации виртуальная среда может быть действительно полезной для поддержания зависимостей обоих проектов. По умолчанию каждый проект в вашей системе будет использовать эти же каталоги для хранения и извлечения пакетов сайтов (сторонних библиотек). Какое это имеет значение? Теперь, в приведенном выше примере двух проектов, у вас есть две версии X. Это настоящая проблема для Python, поскольку он не может различать версии в каталоге «site-packages». Таким образом, и V1, и V2 будут находиться в одном каталоге с одним и тем же именем. Здесь в игру вступают виртуальные среды. Чтобы решить эту проблему, нам просто нужно создать две отдельные виртуальные среды для обоих проектов. Самое замечательное в этом то, что у вас нет ограничений на количество сред, которые вы можете иметь, поскольку они представляют собой просто каталоги, содержащие несколько скриптов.

Виртуальную среду следует использовать всякий раз, когда вы работаете над любым проектом на основе Python. Как правило, хорошо иметь одну новую виртуальную среду для каждого проекта на основе Python, над которым вы работаете. Таким образом, зависимости каждого проекта изолированы от системы и друг от друга.

Как работает виртуальная среда?

Модуль с именем virtualenv, который представляет собой инструмент, используемый для создания изолированных сред Python. virtualenv создает папку, содержащую все необходимые исполняемые файлы для использования пакетов, которые потребуются проекту Python.

Руководство для VirtualEnv

Инструмент virtualenv работает как на Python2, так и на Python3.

Установка Virtualenv

$ pip install virtualenv

Создание и запуск виртуальной среды

$ virtualenv name     // created virtual Environment 'name'

После выполнения этой команды будет создан каталог с именем «name». Это каталог, содержащий все необходимые исполняемые файлы для использования пакетов, которые потребуются проекту Python. Здесь будут установлены пакеты Python.
Если вы хотите указать интерпретатор Python по вашему выбору, например, Python 3, это можно сделать с помощью следующей команды

$ virtualenv -p /usr/bin/python3 name

Чтобы создать виртуальную среду Python 2.7, используйте следующую команду

$ virtualenv -p /usr/bin/python2.7 name

После создания виртуальной среды ее необходимо активировать. Не забывайте активировать соответствующую виртуальную среду каждый раз, когда вы работаете над проектом.

$ source name/bin/activate  # for bash/zsh shell
$ . name/bin/activate.fish  # for fish shell
C:/> name\Scripts\Activate.ps1 # for Windows cmd.exe

После активации виртуальной среды имя вашей виртуальной среды появится в левой части терминала. Это даст вам знать, что виртуальная среда в настоящее время активна. Теперь мы можем установить зависимости, связанные с проектом, в этой виртуальной среде.

$ (name)$ pip install flask

Пакет Flask будет помещен в папку «name» и будет изолирован от всей системы.

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

$ pip list
Package      Version
------------ -------
Click        7.0
Flask        1.0.2
itsdangerous 1.1.0
Jinja2       2.10
MarkupSafe   1.1.0
pip          18.1
setuptools   40.6.2
Werkzeug     0.14.1
wheel        0.32.3

Деактивация виртуальной среды

Когда вы закончите работу, вы можете деактивировать виртуальную среду с помощью следующей команды

$ (name)$ deactivate

Покинув виртуальную среду, вы увидите, что пакеты в нашей основной среде сильно отличаются.

$ pip list
pip (8.1.1)
pycrypto (2.6.1)
setuptools (20.7.0)
virtualenv (16.1.0)
wheel (0.29.0)

Удаление виртуальной среды

$ rm -r /path/to/name

Несколько справочных команд virtualenv

virtualenv [OPTIONS] ENV_DIR

Где ENV_DIR - абсолютный или относительный путь к каталогу, в котором создается виртуальная среда.

Опции

--version показать номер версии программы и выйти

-h, --help показать это справочное сообщение и выйти

-v, --verbose Повышение уровня детализации.

-q, --quiet Уменьшить многословие.

--clear Удалите установку без полномочий root и начните с нуля.

--system-site-packages Предоставьте виртуальной среде доступ к глобальным сайтам-пакетам.

--always-copy Всегда копируйте файлы, а не создавайте символьные ссылки.

--relocatable Сделайте СУЩЕСТВУЮЩУЮ среду virtualenv перемещаемой. Это исправляет сценарии и делает все файлы .pth относительными.

--unzip-setuptools При установке разархивируйте программу установки.

--extra-search-dir=DIR Каталог для поиска дистрибутивов setuptools / pip. Этот параметр можно указывать несколько раз.

Ссылки