Гайд про то как direnv убрал боль.
Столкнулся с проблемой активации виртуального окружения poetry. Перепробывал разные варианты. Но все какие то костыли и постоянно приходиться думать об активации и выходе. Случайно наткнулся на интересное и элегантное решение - direnv.
direnv действительно очень удобен, и это правильное, а не “костыльное” решение. Это стандартный и широко используемый инструмент для автоматизации окружения. Суть его работы проста: вы cd в папку проекта — окружение само активируется, выходите - само деактивируется. Ручные команды source или poetry shell больше не нужны.
Настройка Шаг 1: Установка direnv Для вашей системы (Linux/Debian) проще всего установить direnv через пакетный менеджер:
sudo apt update && sudo apt install direnv
Также вы можете установить последнюю версию через скрипт на официальном сайте: curl -sfL https://direnv.net/install.sh | bash .
Шаг 2: Интеграция с вашим shell (Bash) Чтобы direnv “включился” и работал в вашем терминале, нужно добавить одну строчку в конфигурационный файл ~/.bashrc. Откройте его любым редактором:
nano ~/.bashrc
# или code ~/.bashrc
Добавьте эту строку в конец файла:
eval “$(direnv hook bash)”
Теперь перезагрузите конфигурацию, чтобы изменения вступили в силу:
source ~/.bashrc
После этого direnv готов к работе .
Шаг 3: Настройка проекта С этого момента всё, что вам нужно, — это создать в корне вашего проекта один простой файл и один раз разрешить его выполнение. 1. Перейдите в папку вашего проекта:
cd ~/My_folder/my_works/my-program/auth_service
2. Создайте файл .envrc с единственной строкой :
echo ‘source $(poetry env info --path)/bin/activate’ > .envrc (Благодаря тому, что мы настроили Poetry на создание .venv в папке проекта, эта команда всегда найдет нужный путь).
3. Разрешите выполнение этого файла. direnv по соображениям безопасности не запускает .envrc автоматически. Выполните:
direnv allow
Готово. Теперь вы можете проверить.
Шаг 4: Наслаждаемся результатом Выйдите из папки проекта и зайдите обратно:
cd … cd auth_service
Вы увидите сообщение от direnv. “А как же деактивация?” Это самая приятная часть: вам не нужно о ней думать. direnv делает это автоматически. Когда вы выходите из папки проекта, он возвращает ваше окружение в исходное состояние . Просто наберите: cd … И вы увидите, как префикс исчезнет, а в терминале появится сообщение direnv: unloading. Это не костыль, а элегантное и широко распространённое решение. С ним ваш рабочий процесс станет чище и приятнее.