我试图在
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')
这里有什么问题?
这可能是一个错误:
在我的 my_script/config/config.yaml 中,我添加了以下内容:
搜索路径: - pkg://my_lib.config - pkg://my_lib.config.config_group_B
搜索路径元素不应嵌套。如果你想在 config_group_B 中编写配置,你应该在搜索路径中使用它们的完整相对路径来引用它们,例如
config_group_B/some-config
。
关于您的实际问题: 您能提供一个完整的最小示例吗?