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

Ell*_*ert 6 ssh subprocess python-3.x tensorflow

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

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

我可以让脚本运行并将输出返回到我的本地脚本没问题.在服务器端脚本内部我有一个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)
Run Code Online (Sandbox Code Playgroud)

错误:

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

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

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

任何帮助都会非常感激.

Ell*_*ert 0

感谢塞缪尔·迪翁·吉拉多和恩哈伯德的尝试。不过我已经找到了解决方案。我将错误解释为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"')
Run Code Online (Sandbox Code Playgroud)

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

感谢您尝试提供帮助。