我希望这里有人可以帮助我,因为我是 Hydra 配置框架的新手。
假设我们有一个具有这种结构的 Python 项目:
hydra_config
├── conf
│ ├── api_key
│ │ ├── non_prod.yaml
│ │ └── prod.yaml
│ └── db
│ ├── mysql.yaml
│ └── postgresql.yaml
├── modules
│ └── module.py
└── my_app.py
现在,在 Hydra 的配置文档中,他们声明我们需要在我们想要访问配置文件的函数之上添加一个 Python 装饰器。但是,文档仅显示了如何对my_app.py
作为项目主要模块的函数执行此操作。
问题是,如何添加
@hydra.main(config_path="conf")
一个函数的 Python 装饰器,假设module_function
它位于modules/module.py
? 以下是 的内容module.py
:
import hydra
from omegaconf import DictConfig, OmegaConf
@hydra.main(config_path="conf")
def module_function(cfg: DictConfig):
print(OmegaConf.to_yaml(cfg))
然后下面是主要 Python 模块的内容my_app.py
:
from modules.module import module_function
def main():
module_function()
if __name__ == "__main__":
main()
当我尝试使用 运行主要 Python 模块my_app.py
时python my_app.py
,我立即收到一条错误消息
Primary config module 'modules.conf' not found.
Check that it's correct and contains an __init__.py file
Set the environment variable HYDRA_FULL_ERROR=1 for a complete stack trace.
我知道这意味着添加到module_function
里面的装饰器module.py
找不到conf
包含api_key和db配置组的目录。
这里有没有人有这方面的经验并且知道如何解决这个错误?
任何帮助将不胜感激。谢谢!