在 dvc 的命令部分扩展环境变量 运行

Expanding environment variables in the command part of a dvc run

总结:我正在尝试使用 dvc-run 定义 dvc 步骤,其中命令取决于某些环境变量(例如 $HOME).问题是,当我在机器 A 上定义步骤时,变量在存储在 .dvc 文件中时会扩展。在这种情况下,将无法在机器 B 上重现该步骤。我是否达到了 dvc 的限制?如果不是这种情况,正确的方法是什么?

更多详细信息:我在尝试定义命令为 docker run 的步骤时遇到了问题。说:

此外,假设我有一个脚本 myrepo/script.R,它处理要在 myrepo/data/mydata.txt 中找到的数据文件。最后,假设我的步骤命令类似于:

docker run -v $HOME/myrepo/:/prj/ my_docker_image /prj/script.R /prj/data/mydata.txt

如果我是 运行 dvc run -f step.dvc -d ... -d ... [cmd] 其中 cmd 是上面的 docker 执行,那么在 step.dvc 环境变量 $HOME将被扩大。在这种情况下,步骤将在机器 B 上中断。

来自docs

Use single quotes ' instead of " to wrap the command if there are environment variables in it, that you want to be evaluated dynamically. E.g. dvc run -d script.sh './myscript.sh $MYENVVAR'