基于this tutorial构建TF图像分类器,我有一个bash shell,我在其中使用以下命令运行Docker镜像:
<datasource jta="true" jndi-name="java:jboss/datasource/AssetTrackerDS"
然后在这个docker镜像中我运行我的Python脚本:
<jta-data-source>java:jboss/datasources/AssetTrackerDS</jta-data-source>
有效。
但是现在,我需要在Python脚本中自动执行这些命令。我试过了:
docker run --name fooldocker -it -v $HOME/tf_files:/tf_files/ gcr.io/tensorflow/tensorflow:latest-devel
在Popen#2运行后导致此错误:
python /tf_files/label_image.py /tf_files/myimages
exit
答案 0 :(得分:1)
问题是无法在此单引号字符串中评估$HOME
。尝试双引号,或预先评估变量并将其放入命令字符串。
另外:如果设置shell = True,则不要将命令拆分为列表:
p = Popen('docker kill fooldocker', shell=True, stdout=PIPE, stderr=PIPE)
答案 1 :(得分:0)
这是因为Popen没有将$HOME
解释为你的家乡道路。
它是字符串$HOME
并传递给docker命令,该命令不允许在卷名中使用$
。
为方便起见,您可以使用subprocess
模块,例如:
import subprocess
subprocess.call("echo $HOME", shell=True)
如果指定了$HOME
,它会解释shell=True
。