Установка переменных окружения в virtualenv для Heroku
Быстрый ответ
Для установки временной переменной окружения в сессии virtualenv выполните следующую команду:
export VAR_NAME=value
Если же вы хотите сохранить переменную надолго, добавьте команду export
в файл bin/activate
своего виртуального окружения:
echo 'export VAR_NAME=value' >> bin/activate
Теперь давайте рассмотрим, как можно усовершенствовать этот процесс с помощью virtualenvwrapper и других инструментов.
Использование преимуществ virtualenvwrapper
Virtualenvwrapper пригодится для эффективной настройки окружения, обеспечивающего удобные хуки, такие как postactivate
и predeactivate
.
Усовершенствование процесса активации с помощью хуков
Настройте скрипт postactivate следующим образом:
echo 'export FOO=bar' >> $VIRTUAL_ENV/bin/postactivate
# Теперь здесь есть место для переменной FOO
echo 'cd /path/to/project/dir' >> $VIRTUAL_ENV/bin/postactivate
После этого при каждой активации virtualenv
переменная FOO
будет автоматически добавляться, что будет способствовать порядку в вашем рабочем пространстве.
Для тщательной очистки окружения используйте хук predeactivate:
echo 'unset FOO' >> $VIRTUAL_ENV/bin/predeactivate
# Позволим FOO уйти без следа. Оставьте после себя чистоту!
This will remove any traces of FOO
, preventing it from cluttering up your global environment.
Эффективное переключение между каталогами
С помощью virtualenvwrapper
можно создать символическую ссылку на каталог проекта внутри virtualenv
:
ln -s /path/to/project/dir $VIRTUAL_ENV/project
# Несколько шагов к вашему проекту!
Это позволит вам быстро переключаться между проектами и экономить время при навигации.
Автоматизация настройки окружения
Воспользуйтесь командой mkvirtualenv
из пакета virtualenvwrapper
для автоматического создания символических ссылок, установки переменных окружения и выполнения других задач при создании нового virtualenv
:
mkvirtualenv --no-site-packages my_project
# Магия в действии...
Настройте скрипт один раз и повторяйте действия без затруднений.
Альтернативные методы для гладкой интеграции
Direnv — властитель переменных
Утилита Direnv
автоматически устанавливает переменные окружения при входе в директорию, работая как незаметный помощник:
echo 'export FOO=bar' > .envrc
direnv allow .
# Готов исполнить ваши приказы, господин!
Если вам нужны дополнительные сведения, посетите страницу проекта GitHub direnv.
Точное попадание: редактирование скрипта активации
Можно внести переменные непосредственно в скрипт activate
внутри каталога bin
вашего virtualenv
, чтобы быстро внести изменения:
echo 'export FOO=bar' >> $VIRTUAL_ENV/bin/activate
# Как будто окрашиваем наше окружение!
Не забудьте добавить команду unset
для удаления переменной при деактивации.
Редкие ситуации и способы их решения
Играя со своими символическими ссылками и интеграциями, всегда делайте резервные копии своих переменных окружения и управляйте ими бережно, чтобы избежать путаницы:
OLD_JUDGE=$JUDGEMENT
export JUDGEMENT=NewPerception
# Немного амнезии не повредит!
Возвращайте все в исходное состояние при помощи хука predeactivate
:
echo 'export JUDGEMENT=$OLD_JUDGE' >> $VIRTUAL_ENV/bin/predeactivate
# Вернемся к прежнему восприятию.
Визуализация
Аналогия с регулированием радиоприёмника 📻 должна помочь вам понять, как работает установка переменных окружения. Представьте себе, что вы находитесь в доме, который служит аналогом системного окружения, и каждая отдельная виртуальная среда — это как комната.
Вернувшись к реальности, помните о необходимости сброса переменных при помощи predeactivate
, чтобы избежать путаницы между ними:
🚪🌍 Глобальное: DEFAULT настройки сохраняются без изменений.
🚪👀 Кухня: Вы можете переключать настройки на CUSTOM, не затрагивая остальные помещения.
Ознакомление с документацией
Не забывайте изучать официальную документацию для более глубокого понимания и эффективного использования тех или иных инструментов.