Python скрипт работает локально, но не через SSH - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь связать Raspberry pi с pycroft с Turtlebot через S SH. Я создал навык и хочу, чтобы, когда я сказал «go куда-то», черепаха отправилась в это место.

Никаких проблем с этой частью. Проблема возникает здесь.

У меня есть сценарий python, и он отлично работает, если сначала я подключаюсь через s sh, а затем я выполняю python go_to_specific_point_on_map.py

$ ssh tb2@192.168.0.158
$ python go_to_specific_point_on_map.py

Изображение всего, что работает нормально

Но если я попытаюсь сделать все в одной команде, я получу: ImportError: Нет модуля с именем 'rospy'

$ ssh tb2@192.168.0.158 python go_to_specific_point_on_map.py

Изображение ошибки. ImportError: Нет модуля с именем 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, но я получаю ту же ошибку. $ s sh tb2@192.168.0.158 "source ~ / .bashrc; python go_to_specific_point_on_map.py"

Файл go_to_specific_point_on_map.py находится здесь: go для указания c точка на карте script

Я думаю, что это проблема из-за .bashr c не загружается и псевдоним также. Я не знаю точно, в чем проблема и как ее решить.

Может кто-нибудь мне помочь? пожалуйста.

Я не знаю, как заставить его работать.

Большое спасибо и наилучшие пожелания

1 Ответ

0 голосов
/ 12 января 2020

Я предполагаю, что это проблема пути, попробуйте добавить местоположение модуля rospy в pythonpath с помощью:

import sys

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

import rospy

проблема в том, что вам нужно вручную изменить путь, если код выполняется в разных системах с разным расположением модуля 'rospy'

Если вы не знаете путь, вы можете сначала выполнить программу python, например

import sys
print(sys.path) 

в обоих направлениях (непосредственно в s sh и после s sh) и посмотрите, есть ли разница в выводе, если вы видите разницу, просто увеличьте путь в вашем коде на эту разницу.

пример:

вывод с выполнением после подключения:

$ 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']

если вы видите разницу, измените код в черепахе с:

import sys

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

import rospy
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...