Как установить переменные среды в пакете conda, чтобы они устанавливались при активации среды, содержащей этот пакет? - PullRequest
0 голосов
/ 15 апреля 2020

Я знаю, что могу создать env_vars. (Bat | sh) внутри каталога activ.d в среде, однако я хочу, чтобы переменные были включены как часть пакета, поэтому, если пакет заменен на в другой версии это изменит переменные окружения.

Согласно документации здесь: https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#saving -environment-variable , я должен иметь возможность создавать env_vars. (bat | sh) как часть пакета conda

Этот тип файла сценария может быть частью пакета conda, и в этом случае эти переменные среды становятся активными при активации среды, содержащей этот пакет.

Вы можете назвать эти сценарии как угодно. Однако несколько пакетов могут создавать файлы сценариев, поэтому обязательно используйте описательные имена, которые не используются другими пакетами. Один из популярных вариантов - присвоить сценарию имя в форме packagename-scriptname. sh или на Windows, packagename-scriptname.bat.

Я пытался создать оба env_vars. bat и packagename-env_vars.bat, которые затем устанавливают переменные среды, как описано в документации, но при установке пакета и активации среды переменные не создаются. Есть ли еще один шаг, который мне нужно сделать?

Мой meta.yml:

package:
  name: maya
  version: 2020

Мой env_vars.bat:

set MAYA_VERSION=2020
set MAYA_LOCATION="C:\Program Files\Autodesk\Maya%MAYA_VERSION%"

1 Ответ

1 голос
/ 17 апреля 2020

Как упоминалось в cel, env_vars необходимо скопировать в папку activ.d. Я не знал достаточно о conda, чтобы знать, что, когда в документах говорится, что пакет может содержать эти сценарии, что эти сценарии действительно должны быть скопированы, автоматическое выполнение сценариев c не выполняется.

На самом деле Есть два файла env_var.bat: один для установки переменных при активации среды, а другой для сброса переменных при деактивации среды.

maya-activ-env_vars.bat

@echo off
set MAYA_VERSION=2020
set MAYA_LOCATION="C:\Program Files\Autodesk\Maya%MAYA_VERSION%"

maya-deactivate-env_vars.bat

@echo off
set MAYA_VERSION=
set MAYA_LOCATION=

Отсутствующим фрагментом был скрипт bld.bat, который копировал файлы * env_vars.bat в правильные (de) activ.d каталоги при установке пакета:

bld.bat

setlocal EnableDelayedExpansion
for %%F in (activate deactivate) DO (
    if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
    copy %RECIPE_DIR%\maya-%%F-env_vars.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%-%%F-env_vars.bat
)

Следует отметить, что если вы удалите пакет, а затем При деактивации среды переменные останутся, потому что env_vars в deactivate.d будут удалены, поэтому переменные никогда не будут сброшены. Вы можете исправить это, удалив пакет после деактивации среды с флагом -n.

...