【发布时间】:2022-08-03 02:10:23
【问题描述】:
假设我们有一个具有这种结构的 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和D b配置组。
这里有没有人有这方面的经验并且知道如何解决这个错误?
标签: python path config fb-hydra hydra-python