0

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

├── 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"

现在的问题是:如何找到配置中指定的文件的正确位置?我知道to_absolute_path()hydra 提供的方法,但它解释了相对于启动应用程序的目录的路径。但是,我想解释相对于配置文件位置的路径。我无法在我的代码中手动执行此操作,因为我不知道 hydra 是如何解析配置文件的以及它的确切用途。

是否有某种机制可以从 hydra 确定配置文件的位置?我真的想避免在我的配置中放置硬编码的绝对路径。

4

1 回答 1

0

您无法获取配置文件的路径。事实上,它可能根本不是文件(例如结构化配置的情况),或者它可以在 python 轮中(甚至在带拉链的轮中)。

你可以做类似的事情

path = os.path.join(os.path.dirname(__file__), "relative_path_from_config")

您还可以使用为从 Python 模块加载资源文件而设计的 API。 是该主题的一个很好的答案。

于 2021-01-07T03:11:07.003 回答