假设我们有以下设置(从hydra docs复制并缩短):
配置文件:config.yaml
db:
driver: mysql
user: omry
pass: secret
Python文件:my_app.py
import hydra
@hydra.main(config_path="config.yaml")
def my_app(cfg):
print(cfg.pretty())
if __name__ == "__main__":
my_app()
当我们可以在函数my_app
上使用装饰器时,这很好用。现在,我想(对于小型脚本和测试目的而言,但这并不重要),只需使用简单的python脚本即可将此cfg
对象获取到任何函数之外。据我了解装饰器的工作原理,应该可以调用
import hydra
cfg = hydra.main(config_path="config.yaml")(lambda x: x)()
print(cfg.pretty())
但是cfg
只是None
,而不是所需的配置对象。因此,装饰器似乎没有传递返回的值。还有另一种方法可以到达cfg
吗?
我找到了一个很丑陋的答案,但它可以工作-如果有人找到了更优雅的解决方案,请告诉我们!