在 DVC 中,可以定义管道。在 Unix 中,通常不能在根级别工作。此外,DVC 期望文件位于 git 存储库中。
所以,这似乎是一个典型的问题。
假设我有以下内容:
/home/user/project/content-folder/data/data-type/cfg.json
/home/user/project/content-folder/app/foo.py
Git 开始于/home/user/project/
cd ~/project/content-folder/data/data-type
../../app/foo.py do-this --with cfg.json --dest $(pwd)
对我来说似乎是合理的:脚本采用存储在特定位置的配置,针对一些封装的功能运行它,并使用绝对路径将其输出到目的地。
的默认行为--dest
是输出到当前工作目录。这似乎是另一个合理的默认值。
接下来,我去配置params.yaml
文件dvc
,我立即感到困惑和不确定会发生什么。我写的:
foodoo:
params: do-this --with ????/cfg.json --dest ????
我想写的(并且会在 shell 脚本中):
#!/usr/bin/env bash
origin:=$(git rev-parse --show-toplevel)
verb=do-this
params=--with $(origin)/content-folder/data/data-type/cfg.json --dest $(origin)/content-folder/data/data-type
但是,在 DVC 中,路径似乎是隐含的,我也不知道从哪里开始:
- DVC 将在本地计算我的脚本的路径
- 不在本地计算我的脚本的路径
这很好——我可以发现这一点。但我有理由确定 DVC 绝对不会在我的 params.yaml 中的目录和文件参数前面加上我的项目路径。
如何实现不假定固定项目位置的路径控制,就像我在 BASH 中那样?