在conda environment.yml文件中,如何在不覆盖现有变量的情况下追加到现有变量



这是这个答案的后续问题。例如,对于conda环境规范文件environment.yml,如果我定义的变量是PATH,我如何对其进行预处理或追加,而不仅仅是覆盖它?以下内容正确吗?

name: foo
channels:
- defaults
dependencies:
- python
variables:
MY_VAR: something
OTHER_VAR: ohhhhya
PATH: /some/path:$PATH

这取决于您使用的是windows还是linux。通过查看环境init代码的源代码,可以发现conda本身只是执行bash(linux(或cmd.exe(win(调用:

linux:

yield from (f"export {envvar}='{value}'" for envvar, value in sorted(env_vars.items()))

窗口:

yield from (f'@SET "{envvar}={value}"' for envvar, value in sorted(env_vars.items()))

因此,请确保为变量使用了正确的语法。在linux的情况下,这将是

variables:
MY_VAR: something
OTHER_VAR: ohhhhya
PATH: /some/path $PATH

AFAIK窗口使用;来分隔条目,因此您可能必须这样做(未经测试(:

variables:
MY_VAR: something
OTHER_VAR: ohhhhya
PATH: /some/path;%PATH%

最新更新