FB-Hydra:在 Hydra main 期间调用 compose 无法在搜索路径中正确查找配置

问题描述 投票:0回答:1

我试图在

hydra.main
中调用 compose,但它没有正确使用我在主配置中设置的搜索路径。这是我的脚本的组织:

my_script
 ┣ config
 ┃ ┣ config.yaml
 ┗ my_script.py

我的脚本依赖于我正在开发的库中的配置包,它的组织方式如下:

my_lib
 ┣ config
 ┃ ┣ config_group_A
 ┃ ┃ ┣ ...
 ┃ ┣ config_group_B
 ┃ ┃ ┣ some_config.yaml
 | | ┗ __init__.py
 | ┗ __init__.py

等等。

在我的

my_script/config/config.yaml
中我添加了以下内容:

  searchpath:
    - pkg://my_lib.config
    - pkg://my_lib.config.config_group_B

目的是主配置使用

my_lib/config
内的大量配置,但我也想在
hydra.main
内,使用
hydra.compose
来组成配置
some_config.yaml

问题是,当我在

hydra.compose
内调用
hydra.main
时,出现以下错误:

hydra.errors.MissingConfigException: Cannot find primary config 'some_config'. Check that it's in your config search path.

Config search path:
    provider=hydra, path=pkg://hydra.conf
    provider=main, path=file:///<path_to_scripts>/my_script/config
    provider=schema, path=structured://

但我很困惑,因为我将

my_lib.config
my_lib.config.config_group_B
添加到搜索路径中。这些甚至出现在
hydra.core.hydra_config.HydraConfig.get().searchpath
hydra.core.hydra_config.HydraConfig.get().runtime.config_sources
中,所以奇怪的是我无法在
some_config.yaml
期间创作
hydra.main
。作为参考,我调用脚本
hydra.main(version_base="1.3", config_path='config', config_name='config')

这里有什么问题?

python python-3.x fb-hydra
1个回答
0
投票

这可能是一个错误:

在我的 my_script/config/config.yaml 中,我添加了以下内容:

搜索路径: - pkg://my_lib.config - pkg://my_lib.config.config_group_B

搜索路径元素不应嵌套。如果你想在 config_group_B 中编写配置,你应该在搜索路径中使用它们的完整相对路径来引用它们,例如

config_group_B/some-config

关于您的实际问题: 您能提供一个完整的最小示例吗?

© www.soinside.com 2019 - 2024. All rights reserved.