我有一个复杂的配置搜索路径,由多个位置组成,每个位置看起来都类似:
├── conf
│ └── foo
│ ├── foo.yaml
│ └── bar.yaml
└── files
├── foo.txt
└── bar.txt
带foo.yaml:
# @package _group_
path: "../../files/foo.txt"
和bar.yaml:
# @package _group_
path: "../../files/bar.txt"
现在的问题是:如何找到配置中指定的文件的正确位置?我知道hydra提供的to_absolute_path()
方法,但它解释了相对于启动应用程序的目录的路径。但是,我想根据配置文件的位置来解释该路径。我不能在我的代码中手动做到这一点,因为我不知道hydra是如何解析配置文件的,也不知道它到底用在哪里
是否有某种机制可以从hydra中确定配置文件的位置?我真的想避免在我的配置中使用硬编码的绝对路径。
您无法获取配置文件的路径。事实上,它可能根本不是一个文件(例如Structured Configs的情况(,也可能在python轮中(甚至在压缩轮中(。
你可以做一些类似的事情
path = os.path.join(os.path.dirname(__file__), "relative_path_from_config")
您还可以使用为从Python模块加载资源文件而设计的API。这是一个很好的答案。