使用Hydra时获取系统环境变量

问题描述 投票:0回答:2

当我使用 Hydra 时,我想通过 .yaml 访问环境变量,如下所示,但它给了我一个错误。

system_env1:   ${SYS_ENV_1}

我也尝试过失败:

system_env1:   $SYS_ENV_1

我不想通过python代码获取变量。它应该通过 .yaml 接口检索。

python linux configuration yaml fb-hydra
2个回答
1
投票

如果您想访问 Hydra 中的环境变量,请使用 omegaconf 的解析器

oc.env
,它也适用于 Hydra。

system_env1:   ${oc.env:SYS_ENV_1}

0
投票

您可能应该阅读 YAML 1.2 规范,或者至少尝试将 Python 字符串

"$abc"
转储到 YAML 文档文件,并检查输出。您会发现,对于
$
来说,没有什么特别的需要,比如转义。 因此,您所说的“应该在 .yaml 文件中调用它”是错误的,符合标准的解析器只会按原样加载
$
,即使它出现在标量的开头。

您(或 Hydra-core)需要对加载的数据进行后处理并替换以模式开头的字符串值,这意味着在 Python 中执行操作。或者,您可以在将文本传递给 YAML 解析器之前使用一些模板扩展器对文本进行预处理。根据我的经验,后一个选项更常见,但在这种情况下,IMO,您不应该将输入称为 YAML 文件,也不使用 .yaml 扩展名,因为这显然会导致混乱。

    

© www.soinside.com 2019 - 2024. All rights reserved.