如何解决是否可以在配置文件中指定相对于配置文件位置的路径?
我有一个复杂的配置搜索路径,其中包含多个位置,其中每个位置看起来都类似于:
├── 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 举报,一经查实,本站将立刻删除。