3

摘要:我正在尝试使用命令依赖于某些环境变量(例如)的位置来定义一个dvc步骤。问题是,当我在机器 A 上定义步骤时,变量在存储在文件中时会展开。在这种情况下,将无法在机器 B 上重现该步骤。我是否遇到了限制?如果不是这种情况,那么正确的方法是什么?dvc-run$HOME.dvcdvc

更多详细信息:我在尝试定义命令为docker run. 比如说:

  • 在机器 Amyrepo上位于/Users/user/myrepo
  • 在机器 B 上,它位于/home/ubuntu/myrepo

此外,假设我有一个脚本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]如果我正在运行上面cmddocker执行,那么在step.dvc环境变量$HOME中将被扩展。在这种情况下,步骤将在机器 B 上中断。

4

1 回答 1

1

来自文档

如果命令中有环境变量,您希望动态评估,请使用单引号 ' 而不是 " 来包装命令。例如 dvc run -d script.sh './myscript.sh $MYENVVAR'

于 2019-07-24T17:21:12.483 回答