Кто-нибудь знает, как автоматически устанавливать переменные среды при активации env в conda? Я пробовал редактировать */bin/activate, но это добавляет новые переменные среды для каждого созданного нового env. Я хочу установить переменные env, специфичные для каждого env.
Как установить определенные переменные среды при активации среды conda?
Ответ 1
Используйте файлы $CONDA_PREFIX/etc/conda/activate.d
$CONDA_PREFIX/etc/conda/deactivate.d
и $CONDA_PREFIX/etc/conda/deactivate.d
, где $CONDA_PREFIX
- это путь к среде.
См. Раздел об управлении средами в официальной документации для справки.
Ответ 2
Принятый ответ (conda/activate.d
и conda/deactivate.d
) работает достаточно хорошо, но неудобно, если вы хотите, чтобы переменные окружения контролировались версией, не вставляя всю среду в контроль версий. Как правило, вы хотите сохранить только файл environment.yml
в управлении версиями.
(Я понимаю, что это не относится ко всем проектам - иногда вся причина использования переменных среды - предотвращать сохранение определенной конфигурации в управлении версиями.)
Мои предпочтения (в Windows, но тот же принцип применим к Linux) заключается в создании файла с контролируемой версией activate.cmd
в корне каталога проекта, который устанавливает переменную окружения, а затем вызывает conda собственный activate.bat script.
Пример (конфигурация pylint для каждого проекта):
set PYLINTRC=%cd%\pylintrc
@activate.bat %cd%\env
Обратите внимание, что в Windows по крайней мере вы должны установить переменные среды перед вызовом activate.bat
, потому что вызов activate.bat
никогда не возвращается в вызывающий пакетный файл. Вы также должны называть свой собственный script чем-то другим, чем activate.bat
, чтобы избежать рекурсии, поэтому я выбрал расширение cmd
(которое рассматривается в Windows как пакетный файл в этом контексте).
Ответ 3
Итак, для virtualenv на Ubuntu я сделал ниже, где мои виртуальные имена environement - my_env, и мои переменные окружения, которые я хочу сохранить, были VAR_A и VAR_B:
virtualenv my_env
vim my_env/bin/activate
Это откроет файл, и вы можете добавить переменные env в конец файла, как показано ниже:
# This is me env variables to persist
export VAR_A=/home/developer/my_workspace/var_a
export VAR_B=/home/developer/my_workspace/var_b
Затем выйдите из файла.
Активируйте свой виртуальный
source my_env/bin/activate
Тогда ваши переменные env должны быть хорошими. Можно проверить, как показано ниже:
printenv | grep VAR_
VAR_B=/home/developer/my_workspace/var_b
VAR_A=/home/developer/my_workspace/var_a