gpt4 book ai didi

python-3.x - 如何在不使用 @hydra.main() 的情况下获取 Hydra 配置

转载 作者:行者123 更新时间:2023-12-03 18:20:51 28 4
gpt4 key购买 nike

假设我们有以下设置(从 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 上使用装饰器时,这很有效。 .现在我想(用于小脚本和测试目的,但这并不重要)得到这个 cfg任何函数之外的对象,只是在一个普通的 python 脚本中。据我了解装饰器的工作原理,应该可以调用
import hydra
cfg = hydra.main(config_path="config.yaml")(lambda x: x)()
print(cfg.pretty())

但随后 cfg只是 None而不是所需的配置对象。所以看起来装饰器没有传递返回值。有没有另一种方法可以到达 cfg ?

最佳答案

使用 Compose API :

from hydra import compose, initialize
from omegaconf import OmegaConf

initialize(config_path="conf", job_name="test_app")
cfg = compose(config_name="config", overrides=["db=mysql", "db.user=me"])
print(OmegaConf.to_yaml(cfg))
这只会组合配置,不会产生副作用,例如更改工作目录或配置 Python 日志记录系统。

关于python-3.x - 如何在不使用 @hydra.main() 的情况下获取 Hydra 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60674012/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com