如果我想做的是反模式,我提前道歉。
我想从我的代码中的某个地方访问我的全局配置,在那里传递 hydra 装饰的主函数使用的配置对象将非常麻烦。
我知道这可以通过使用 HydraConfig 对象的 hydra 特定配置来实现。特定于应用程序的配置是否有类似的结构?谢谢!
如果我想做的是反模式,我提前道歉。
我想从我的代码中的某个地方访问我的全局配置,在那里传递 hydra 装饰的主函数使用的配置对象将非常麻烦。
我知道这可以通过使用 HydraConfig 对象的 hydra 特定配置来实现。特定于应用程序的配置是否有类似的结构?谢谢!
特定于应用程序的配置是否有类似的结构?
不,没有这样的结构。
如果您需要访问全局状态,为什么不使用全局变量呢?
# 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'