Автоматическая активация виртуального окружения

Думаю если вы читаете эту заметку, то понимаете о чем она и зачем все это надо вообще, но вдруг… так на всякий случай…

Предисловие

Работая над разными проектами на Python, будь то сайт на Django или Flask, скрапер сайтов или просто ваш проект, требующий определенных библиотек (или их версий!) все мы используем виртуальное окружение. Но вот лично я все время забываю его активировать… да и дизактивировать тоже при переходе к работе над другим проектом надо бы.

Здесь нам и помогает та самая автоматическая активация. Точнее не совсем так, программы, речь ко которых пойдет ниже предназначены просто для запуска скрипта при попадании в папку, что прекрасно подходит под наши нужды, да и вообще может пригодиться и в других задачах (Напишите в комментарии, как еще вы используете эту автоматику)

direnv — Разблокируйте свой .profile

direnv — это переключатель среды для оболочки. Он умеет подключаться к bash, zsh, tcsh, fish shell и elvish для загрузки или выгрузки переменных окружения в зависимости от текущего каталога. Это позволяет специфичным для проекта переменным среды без загромождать файл ~/.profile.

Перед каждым приглашением direnv проверяет наличие файла .envrc в текущем и родительском каталогах. Если файл существует (и авторизован), он загружается в под-оболочку bash, и все экспортированные переменные затем записываются в direnv и затем становятся доступными для текущей оболочки. Вот что пишут сами авторы:

Поскольку direnv скомпилирован в один статический исполняемый файл, он достаточно быстр, чтобы быть незаметным в каждом приглашении. Он также не зависит от языка и может использоваться для создания решений, аналогичных rbenv, pyenv и phpenv.

autoenv — среды на основе каталогов

«autoenv — Волшебная среда для каждого проекта. Очень претенциозно.» — именно так говорят о своем проект авторы на домашней странице.

Там же они пишут это:

Примечание: вы, вероятно, должны вместо этого использовать direnv. Проще говоря, это программное обеспечение более высокого качества. Но autoenv все еще великолепен. Может попробовать оба? 🙂

Утилита делает все немного попроще и проверяет на наличие файла .env, и исполняет его…

Использование

Детально описывать здесь я ничего не буду (не нужно это здесь!), лишь приложу пример своего использования direnv, т.к. сам сейчас пользуюсь и в данный момент именно он установлен на моем ноутбуке.

Нам нужен файл .envrc к в каталоге приложения, где прописан путь для активации виртуального окружения:

source venv/bin/activate

Затем надо разрешить выполнение выполнение этого файла коммандой:

direnv allow

Все, можно пользоваться благами цивилизации, эксперименты и выводы делайте сами

Заключение

Обе утилиты хороши зарекомендовали себя, обе просты в установке и доступны со всех популярных дистрибутивах, а autoenv и вообще доступна через pip install. Важно(!), что для правильной работы утилит необходимо после установки дописать одну строчку в файл ~/.bashrc (если вы на баше конечно 🙂 подробности смотрите по ссылкам

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *