Python脚本可在本地运行,但不能通过SSH运行

时间:2020-01-12 15:10:59

标签: python ssh ros

我正在尝试通过SSH将带有pycroft的Raspberry pi与Turtlebot链接起来。我已经创造了一种技能,我希望当我说“去某个地方”时,乌龟机器人会转到这个地方。

这部分没有问题。问题来了。

我有一个python脚本,如果首先通过ssh连接,然后执行python go_to_specific_point_on_map.py

,则该脚本可以正常工作
$ ssh tb2@192.168.0.158
$ python go_to_specific_point_on_map.py

Image of everything working fine

但是,如果我尝试用一​​个命令完成所有操作,则会得到: ImportError:没有名为“ rospy”的模块

$ ssh tb2@192.168.0.158 python go_to_specific_point_on_map.py

Image of the error. ImportError: No module named rospy

^[Traceback (most recent call last):
  File "./mubita/go_to_specific_point_on_map.py", line 22, in <module>
    import rospy
ImportError: No module named rospy

我已经尝试了arunp9294的解决方案,但是遇到了同样的错误。 $ ssh tb2@192.168.0.158“源〜/ .bashrc; python go_to_specific_point_on_map.py”

文件go_to_specific_point_on_map.py在此处: go to specific point on map script

我认为这是一个问题,因为未加载.bashrc,也没有别名。我完全不知道问题是什么以及如何解决。

有人可以帮我吗?请。

我不知道如何使它工作。

非常感谢您!

1 个答案:

答案 0 :(得分:0)

我猜这是路径问题,请尝试使用以下命令将rospy模块的位置添加到pythonpath中:

import sys

sys.path.append("/path/to/rospy/in/your/turtlebot")

import rospy

问题是,如果代码在“ rospy”模块的不同位置的不同系统上执行,则必须手动更改路径

如果您不知道路径,可以先执行

之类的python程序
import sys
print(sys.path) 

通过两种方式(直接在ssh中和ssh之后)查看输出是否存在差异,如果您看到差异,则只需使用该差异扩展代码路径即可。

示例:

连接后输出并执行:

$ ssh tb2@192.168.0.158
$ python print_path.py
['a', 'b', 'c', 'd']

在一个命令中通过连接和执行输出:

$ ssh tb2@192.168.0.158 python print_path.py
['a', 'b']

如果发现不同之处,请使用以下命令修改turtlebot中的代码:

import sys

sys.path.extend(['c', 'd'])

import rospy
...