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意味着什么.
任何帮助都会非常感激.
感谢塞缪尔·迪翁·吉拉多和恩哈伯德的尝试。不过我已经找到了解决方案。我将错误解释为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 命令,然后返回结果,因此实际上只需要一个脚本。
感谢您尝试提供帮助。
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |