0

如果我想做的是反模式,我提前道歉。

我想从我的代码中的某个地方访问我的全局配置,在那里传递 hydra 装饰的主函数使用的配置对象将非常麻烦。
我知道这可以通过使用 HydraConfig 对象的 hydra 特定配置来实现。特定于应用程序的配置是否有类似的结构?谢谢!

4

1 回答 1

1

特定于应用程序的配置是否有类似的结构?

不,没有这样的结构。

如果您需要访问全局状态,为什么不使用全局变量呢?

# app.py
from typing import Optional

import hydra
from omegaconf import DictConfig

# global state
app_cfg: Optional[DictConfig] = None

def nested():
    global app_cfg
    assert app_cfg is not None
    print(f"{app_cfg.foo=}")

def fn():
    nested()

@hydra.main(config_path=None)
def app(cfg: DictConfig) -> None:
    global app_cfg
    app_cfg = cfg
    fn()

if __name__ == "__main__":
    app()
$ python app.py +foo=bar
app_cfg.foo='bar'
于 2022-02-05T12:11:11.430 回答