Виртуальные среды 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
- Задаем переменную
VIRTUALENVWRAPPER_PYTHON
, которая указывает на двоичную установку python, на которую следует ссылаться VEW. WORKON_HOME
— это папка, в которой VEW будет хранить все среды и сценарии утилит.VIRTUALENVWRAPPER_VIRTUALENV
— это путь к исходному двоичному файлу virtualenv.
Создание новой виртуальной среды
Как я уже говорил ранее, команды VEW аналогичны командам Linux. Чтобы создать новую среду, выполните следующую строку:
mkvirtualenv my-env
Эта среда будет сохранена по пути, указанному в переменной WORKON_HOME
. Наряду с опциями virtualenv, поддерживаются еще три:
- -a my_path: папка для среды, куда пользователь, на каком бы пути он ни находился в данный момент, перенаправляется всякий раз, когда среда активируется. Среда не создается внутри my_path.
- -i package1 package2 …: установите указанные пакеты после создания среды.
- -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 облегчает запоминание операций.
Читайте также:
- Понятие о виртуальных средах в Python
- Инструменты для создания виртуального окружения в Python
- Виртуальные Окружения в Python
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Pratik Choudhari: Managing Python Environments Like a Pro