【问题标题】:Python script works locally but not through SSHPython 脚本在本地工作,但不能通过 SSH
【发布时间】:2020-01-12 15:10:59
【问题描述】:

我正在尝试通过 SSH 将 Raspberry pi 与 pycroft 与 Turtlebot 链接。我创建了一项技能,我希望当我说“去某个地方”时,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 "source ~/.bashrc; python go_to_specific_point_on_map.py"

文件 go_to_specific_point_on_map.py 在这里: go to specific point on map script

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

有人可以帮助我吗?请。

我不知道如何让它工作。

非常感谢您的问候

【问题讨论】:

  • ssh tb2@192.168.0.158 "source ~/.bashrc; python go_to_specific_point_on_map.py"
  • edit 您的问题包含脚本中的相关代码,并解释运行它时会发生什么。如果您收到错误消息或异常,请包含消息的确切文本。
  • 我已经尝试了 arunp9294 所说的,但我得到了同样的错误
  • 这行得通吗:ssh tb2@192.168.0.158 "bash -i -c 'python go_to_specific_point_on_map.py'"?也许-i 不是必需的。

标签: python ssh ros


【解决方案1】:

我猜是路径问题,尝试将 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
...

【讨论】:

  • 我没有在 Raspberry 中安装 ROS,也没有 rospy。我想通过 SSH 将没有 ROS 的 Raspberry 与带有 ROS 的 Turtlebot 连接起来。在 Turtlebot 中,我确实安装了 ROS。当我首先通过 SSH 连接然后执行 python go_to_specific_point_on_map.py 时,确实一切正常。非常感谢
  • 抱歉,我认为树莓派是连接的目标。我已经更新了答案,检查它是否有效
  • 抱歉没有尽快回复。我尝试了你所说的,我得到了另一个错误。这次“找不到模块”带有一个 ROS 模块。我花了一周时间尝试在 Pycroft 安装上安装 ROS,但我遇到了一些错误。我解决了一个,但我得到了一个更新的。我来到了 SSH 方法和你的帮助。我已将 ROS_PACKAGE_PATH 添加到 ssh 命令中,一切正常。非常感谢@Hoxha Alban
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
相关资源
最近更新 更多