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

Почему бы не использовать глобальные пакеты python? С ними не придется влезать в эту неразбериху со средами, не так ли? Так-то оно так, глобальные пакеты python экономят наше время, управляя средами, но какой ценой! Проблемы — начиная от подготовки установки до перехода к проекту — будут расти в геометрической прогрессии. Я усвоил это на собственном горьком опыте, используя глобальные пакеты для всего и не имея специальной среды для каждого проекта.

В этой статье я расскажу о virtualenvwrapper (VEW)— библиотеке python для управления и настройки сред на python. Она действует наравне со старым добрым virtualenv. Вы увидите, как команды VEW CLI похожи на команды Linux, такие как mkdir, rmdir и cp.

Примечание: на протяжении всей статьи буду для краткости использовать вместо “virtualenvwrapper” аббревиатуру “VEW”.

Предисловие

Важно отметить, что утилита pyenv не связана с virtualenv или VEW. pyenv используется для переключения между несколькими версиями python и не управляет установленными пакетами. Кроме того, pip — менеджер пакетов на python — тоже не может помочь нам в управлении средой, потому что он не был создан для этого. Для получения дополнительной информации прочтите на stackoverflow, в чем разница между pyenv, virtualenv и anaconda.


Установка

Процесс установки такой же, как и в любой другой библиотеке.

pip install virtualenvwrapper

В системе Linux после установки необходимо отредактировать файл .bashrc. Это позволит получить доступ к VEW в любом терминале и в любом месте.

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

export WORKON_HOME=~/my_env_folder

export VIRTUALENVWRAPPER_VIRTUALENV=/home/my_user/.local/bin/virtualenv

source ~/.local/bin/virtualenvwrapper.sh
  1. Задаем переменную VIRTUALENVWRAPPER_PYTHON, которая указывает на двоичную установку python, на которую следует ссылаться VEW.
  2. WORKON_HOME — это папка, в которой VEW будет хранить все среды и сценарии утилит.
  3. VIRTUALENVWRAPPER_VIRTUALENV — это путь к исходному двоичному файлу virtualenv.

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

Как я уже говорил ранее, команды VEW аналогичны командам Linux. Чтобы создать новую среду, выполните следующую строку:

mkvirtualenv my-env

Эта среда будет сохранена по пути, указанному в переменной WORKON_HOME. Наряду с опциями virtualenv, поддерживаются еще три:

  1. -a my_path: папка для среды, куда пользователь, на каком бы пути он ни находился в данный момент, перенаправляется всякий раз, когда среда активируется. Среда не создается внутри my_path.
  2. -i package1 package2 : установите указанные пакеты после создания среды.
  3. -r requirements.txt: создайте среду и установите из файла requirements.txt.

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

rmvirtualenv my_env

Удалите среду из папки. Не забудьте деактивировать ее перед удалением.

Показ подробной информации о среде

showvirtualenv my-env

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

lsvirtualenv

Выведите список всех виртуальных сред, созданных с помощью этого инструмента. Используйте опцию -b, чтобы получить только список сред и проигнорировать подробности.

Активация среды

virtualenv использует следующую команду для активации среды:

source my-env/bin/activate

source — это команда Linux, широко используемая в основном для изменения переменных среды с помощью текущей оболочки. VEW абстрагирует эту исходную команду и предоставляет легкую для запоминания альтернативу под названием workon.

workon my-env

Де-факто VEW выполняет команду source.

Деактивация среды

Деактивация среды в VEW осуществляется так же, как и в virtualenv. В активной оболочке среды выполните следующее:

deactivate

Удаление пакетов сторонних производителей в среде

wipeenv

Эта команда должна выполняться в активной среде. Когда она будет выполнена, VEW идентифицирует все сторонние библиотеки и удалит их.

Заключение

Хотя virtualenv отлично работает для управления всеми средами, virtualenvwrapper является рекомендуемым дополнением. Сходство его команд с командами Linux облегчает запоминание операций.

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Pratik Choudhari: Managing Python Environments Like a Pro

Предыдущая статьяСамые популярные фреймворки React
Следующая статьяПять продвинутых Git-команд, благодаря которым вы будете выглядеть как профи