我正在尝试使用带有paramiko的python脚本在运行ROS的机器人上运行命令。基本上,我的计算机上有一个python脚本,我想连接到机器人以运行位于机器人上的python脚本。当我直接通过SSH在终端中运行命令时,它可以正常工作。但是,当我使用带有paramiko的脚本运行完全相同的命令时,它为我提供了一个名为rospy的无导入错误模块,我理论上理解该模块,因为rospy导入了我的python脚本,但我不明白为什么它不会在终端中通过SSH运行完全相同的命令时,会出现相同的错误。
我已经打印了命令并检查它是否完全相同(至少从我所能告诉的一切),但是当我直接运行这些命令时,我仍然得到不同的结果。其他命令似乎可以正常执行,但这会引起问题。
这是我运行的使用paramiko连接的计算机上的脚本
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=robot_ip, username=robot_user, password=robot_pass)
try:
command = "python ~/SchedulerInitiator.py " + str(initial_turn_angle) + " " + str(dist) + " " + str(final_turn_angle)
print(command)
stdin, stdout, stderr = ssh.exec_command(command)
except paramiko.SSHException:
print("Request rejected or channel closed")
print(stdout.readlines())
print(stderr.readlines())
这些是SchedulerInitiator.py调用的文件上的导入
from SchedulerHandler import *
import threading
import sys
然后将rospy导入SchedulerHandler中,这会导致实际的问题。
这是运行代码时显示的错误:
[u'Traceback (most recent call last):\n', u' File "/home/root/SchedulerInitiator.py",
line 1, in <module>\n', u' from SchedulerHandler import *\n', u' File "/home/root/SchedulerHandler.py",
line 7, in <module>\n', u' import rospy\n', u'ImportError: No module named rospy\n']
当我通过SSH运行完全相同的命令时,它运行就没有错误。
任何想法出什么问题/如何解决?谢谢!!