是否可以在配置文件中指定相对于配置文件位置的路径



我有一个复杂的配置搜索路径,由多个位置组成,每个位置看起来都类似:

├── 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。这是一个很好的答案。

相关内容

  • 没有找到相关文章

最新更新