假设我们有以下设置(从Hydra 文档复制并缩短):
配置文件:config.yaml
db:
driver: mysql
user: omry
pass: secret
蟒蛇文件: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
。现在我想(对于小脚本和测试目的,但这并不重要)cfg
在任何函数之外获取这个对象,只是在一个普通的 python 脚本中。据我了解装饰器的工作原理,应该可以调用
import hydra
cfg = hydra.main(config_path="config.yaml")(lambda x: x)()
print(cfg.pretty())
但 thencfg
只是None
而不是所需的配置对象。所以看起来装饰器没有传递返回的值。还有其他方法可以做到cfg
吗?