Как установить определенные переменные среды при активации среды conda?

Кто-нибудь знает, как автоматически устанавливать переменные среды при активации env в conda? Я пробовал редактировать */bin/activate, но это добавляет новые переменные среды для каждого созданного нового env. Я хочу установить переменные env, специфичные для каждого env.

Ответ 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