摘要:我尝试使用 dvc-run
定义 dvc
步骤,其中命令取决于某些环境变量(例如 $HOME
)。问题是,当我在机器 A 上定义步骤时,变量在存储在 .dvc
文件中时会扩展。在这种情况下,不可能在机器 B 上重现该步骤。我是否遇到了 dvc
的限制?如果情况并非如此,正确的方法是什么?
更多详细信息:我在尝试定义命令为 docker run
的步骤时遇到了问题。说:
- 在机器 A
myrepo
上位于/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]
,其中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'
关于dvc - 在 dvc 运行的命令部分中扩展环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57132106/