当我使用 Hydra 时,我想通过 .yaml 访问环境变量,如下所示,但它给了我一个错误。
system_env1: ${SYS_ENV_1}
我也尝试过失败:
system_env1: $SYS_ENV_1
我不想通过python代码获取变量。它应该通过 .yaml 接口检索。
如果您想访问 Hydra 中的环境变量,请使用 omegaconf 的解析器
oc.env
,它也适用于 Hydra。
system_env1: ${oc.env:SYS_ENV_1}
您可能应该阅读 YAML 1.2 规范,或者至少尝试将 Python 字符串
"$abc"
转储到 YAML 文档文件,并检查输出。您会发现,对于 $
来说,没有什么特别的需要,比如转义。
因此,您所说的“应该在 .yaml 文件中调用它”是错误的,符合标准的解析器只会按原样加载 $
,即使它出现在标量的开头。
您(或 Hydra-core)需要对加载的数据进行后处理并替换以模式开头的字符串值,这意味着在 Python 中执行操作。或者,您可以在将文本传递给 YAML 解析器之前使用一些模板扩展器对文本进行预处理。根据我的经验,后一个选项更常见,但在这种情况下,IMO,您不应该将输入称为 YAML 文件,也不使用 .yaml
扩展名,因为这显然会导致混乱。