微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决是否可以在配置文件中指定相对于配置文件位置的路径?

我有一个复杂的配置搜索路径,其中包含多个位置,其中每个位置看起来都类似于:

├── 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 确定配置文件的位置?我真的不想在我的配置中放置硬编码的绝对路径

解决方法

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

你可以做类似的事情

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。