Управление средами Python на профессиональном уровне
Виртуальные среды 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/activatesource — это команда Linux, широко используемая в основном для изменения переменных среды с помощью текущей оболочки. VEW абстрагирует эту исходную команду и предоставляет легкую для запоминания альтернативу под названием workon.
workon my-envДе-факто VEW выполняет команду source.
Деактивация среды
Деактивация среды в VEW осуществляется так же, как и в virtualenv. В активной оболочке среды выполните следующее:
deactivateУдаление пакетов сторонних производителей в среде
wipeenvЭта команда должна выполняться в активной среде. Когда она будет выполнена, VEW идентифицирует все сторонние библиотеки и удалит их.
Заключение
Хотя virtualenv отлично работает для управления всеми средами, virtualenvwrapper является рекомендуемым дополнением. Сходство его команд с командами Linux облегчает запоминание операций.
Comments