在远程服务器上执行tensorflow python3,子进程无法解释所有tensorflows输入args。 ImportError:没有名为'scripts'的模块

问题描述 投票:5回答:1

我正在尝试从本地主机上执行远程服务器上的张量流图像识别。我的本地计算机有一个脚本,它运行此子进程ssh命令来执行远程服务器上的脚本。

stdoutdata = subprocess.getoutput('sshpass -p \'mypassword\' ssh root@myserverIP "python3 ../var/www/html/tensorflowScreenStatus/getScreenStatus.py"')

我可以让脚本运行并将输出返回到我的本地脚本没问题。在服务器端脚本内部我有一个python子进程运行相同的终端命令,用于tensorflow来筛选图像,当我在远程机器上手动运行它时,它工作正常。

当从我的本地脚本执行服务器端脚本时,python不知道如何处理tensorflow的args。

导致错误的服务器端命令

stdoutdata = subprocess.getoutput("sudo python3 -m scripts.label_image --graph=tf_files/retrained_graph.pb --image=asdfsfsd.jpg") print("stdoutdata: " + stdoutdata)

错误:

/usr/bin/python3: Error while finding spec for 'scripts.label_image' (ImportError: No module named 'scripts')

scripts.label_image是命令中的一个arg,tensorflow理解如何处理。就像在子进程中运行tensorflow命令一样,python忘记让tensorflow读取它。如果我通过sshing到远程服务器手动运行它,同样的命令工作正常。

我甚至不知道该怎么称呼这种错误。这就好像python3仍然可以运行但忘记了在子进程中运行时默认的args意味着什么。

任何帮助都会非常感激。

python-3.x tensorflow ssh subprocess
1个回答
0
投票

谢谢Samuel Dion-Girardeau和nhubbard给它一个机会。然而,我找到了解决方案。我将错误解释为python不知道如何将scripts.label_image目录作为路径读取,而是将其作为要在子进程内运行时导入的模块进行读取。

这是不正确的。 Python不知道如何读取scripts.label_image目录,所以我修改了这样的命令。

stdoutdata = subprocess.getoutput('sshpass -p \'password\' ssh root@ipaddress "python3 ../var/www/html/tensorflowScreenStatus/label_image.py --graph=../var/www/html/tensorflowScreenStatus/tf_files/retrained_graph.pb --image=../var/www/html/tensorflowScreenStatus/asdfsfsd.jpg"')

我将label_image.py,jpg从脚本移动到父目录,设置这些文件夹的完整目录。我还在服务器上取出了中间脚本,所以现在我的本地脚本在本地运行这个ssh命令,远程运行tensorflow命令,然后返回结果,所以实际上只需要一个脚本。

感谢您的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.