You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Hydra Compose API读取嵌套目录YAML报错,求解决方法

问题描述

目录结构

Main_dir:
 conf:
  project:
    test_project1:
      env:
        source:
            src.yaml

src.yaml内容

table: TEST_TABLE
DB: Test_DB

所用Hydra代码

with initialize(version_base=None, config_path="../../conf"):
 cfg = compose(config_name="config", overrides = ["project=test_project1","+source=src"])
 print(cfg)

报错信息

hydra.errors.ConfigCompositionException: Could not override 'project'. No match in the default list
解决方法

这个错误是因为Hydra的基础配置里没有定义project相关的配置项或配置组,导致无法识别project=test_project1这个覆盖指令。按以下步骤修正:

  1. 完善基础配置文件
    在conf目录下创建或修改config.yaml(即代码中指定的config_name),添加配置组的默认引用:

    defaults:
      - project: test_project1
      - _self_
    

    这样Hydra会把project识别为一个配置组,允许通过覆盖指令切换不同的project配置。

  2. 修正覆盖指令的写法
    src.yaml位于test_project1/env/source目录下,需要用嵌套路径指定加载该配置,同时确保project的覆盖能被识别:

    with initialize(version_base=None, config_path="../../conf"):
        cfg = compose(
            config_name="config",
            overrides=[
                "project=test_project1",
                "project.env.source=src"
            ]
        )
        print(cfg)
    
  3. 备选方案:直接加载目标配置
    如果不需要依赖基础配置,也可以直接指定src.yaml的完整路径(从conf目录开始):

    with initialize(version_base=None, config_path="../../conf"):
        cfg = compose(
            config_name=None,
            overrides=["project/test_project1/env/source/src"]
        )
        print(cfg)
    

内容的提问来源于stack exchange,提问作者Hari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 00:07:35