Невозможно импортировать модуль Python в Choregraphe on Pepper

Я установил Google Speech API на робота Pepper через SSH, следуя официальному руководству Google .

Чтобы проверить это, я создал файл speechTest.py, в который импортирую API следующим образом:

from google.cloud import speech

Это работает! Все идет нормально. Но проблема возникает, когда я хочу сделать то же самое в блоке Python в Choregraphe; Когда я получаю сообщение об ошибке:

[ERROR] behavior.box :createPythonModule:0
_Behavior__lastUploadedChoregrapheBehaviorbehavior_11325017632:/GoogleSTT_7:
User class evaluation failed with the error:
<class 'pkg_resources.DistributionNotFound'>
google-cloud-speech

Я попробовал решение, которое появилось в сообществе но безуспешно. Когда я печатаю sys.path из окна Python in Choregraphe, я получаю:

[WARN ] behavior.box :onLoad:15 _Behavior__lastUploadedChoregrapheBehaviorbehavior_1811402208:/GoogleSTT_7: 
/usr/lib/python2.7/site-packages
/usr/lib
/home/nao/.local/lib/python2.7/site-packages/pip-9.0.1-py2.7.egg
/usr/lib/python27.zip
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/home/nao/.local/lib/python2.7/site-packages
/usr/lib/python2.7/site-packages/PIL
/usr/lib/python2.7/site-packages/gst-0.10
/usr/lib/python2.7/site-packages/gtk-2.0
/usr/share/dialog/
/home/nao/.local/share/PackageManager/apps/dialog_lexicon/./
/home/nao/.local/share/PackageManager/apps/dialog_adjust_volume/dlg_adjust_volume/
/home/nao/.local/share/PackageManager/apps/dialog_adjust_volume/my_apps_topic/
/home/nao/.local/share/PackageManager/apps/dialog_applauncher/dlg_applauncher/
/home/nao/.local/share/PackageManager/apps/dialog_applauncher/dlg_suggest_app/
/home/nao/.local/share/PackageManager/apps/dialog_battery_capacity/dlg_battery_capacity/
/home/nao/.local/share/PackageManager/apps/dialog_battery_level/dlg_battery_level/
/home/nao/.local/share/PackageManager/apps/dialog_bleep_sounds/dlg_bleep_sounds/
/home/nao/.local/share/PackageManager/apps/dialog_can_you_repeat/dlg_can_you_repeat/
/home/nao/.local/share/PackageManager/apps/dialog_clock/dlg_clock/
/home/nao/.local/share/PackageManager/apps/dialog_engines/dlg_engines/
/home/nao/.local/share/PackageManager/apps/dialog_goodbye/dlg_goodbye/
/home/nao/.local/share/PackageManager/apps/dialog_hello/dlg_hello/
/home/nao/.local/share/PackageManager/apps/dialog_help/dlg_help/
/home/nao/.local/share/PackageManager/apps/dialog_how_are_you/dlg_how_are_you/
/home/nao/.local/share/PackageManager/apps/dialog_impossible_moves/dlg_impossible_moves/
/home/nao/.local/share/PackageManager/apps/dialog_internet_connection/dlg_internet_connection/
/home/nao/.local/share/PackageManager/apps/dialog_lexicon/skin_B2B/
/home/nao/.local/share/PackageManager/apps/dialog_lexicon/skin_tmp_tweak/
/home/nao/.local/share/PackageManager/apps/dialog_manage_events/dlg_manage_events/
/home/nao/.local/share/PackageManager/apps/dialog_move_arms/dlg_move_arms/
/home/nao/.local/share/PackageManager/apps/dialog_move_hands/dlg_move_hands/
/home/nao/.local/share/PackageManager/apps/dialog_move_head/dlg_move_head/
/home/nao/.local/share/PackageManager/apps/dialog_posture/dlg_posture_pepper/
/home/nao/.local/share/PackageManager/apps/dialog_posture/dlg_posture_nao/
/home/nao/.local/share/PackageManager/apps/dialog_reflex_engaged/dlg_reflex_engaged/
/home/nao/.local/share/PackageManager/apps/dialog_robot_characteristics/dlg_character/
/home/nao/.local/share/PackageManager/apps/dialog_robot_characteristics/dlg_personal_info/
/home/nao/.local/share/PackageManager/apps/dialog_robot_characteristics/dlg_humanoid/
/home/nao/.local/share/PackageManager/apps/dialog_robot_characteristics/dlg_interaction/
/home/nao/.local/share/PackageManager/apps/dialog_robot_origins/dlg_robot_origins/
/home/nao/.local/share/PackageManager/apps/dialog_robot_relationships/dlg_robot_relationships/
/home/nao/.local/share/PackageManager/apps/dialog_robots/dlg_robots/
/home/nao/.local/share/PackageManager/apps/dialog_robots/dlg_asimov/
/home/nao/.local/share/PackageManager/apps/dialog_robots/dlg_famous_robots/
/home/nao/.local/share/PackageManager/apps/dialog_say_something_else/dlg_say_something_else/
/home/nao/.local/share/PackageManager/apps/dialog_set_offset/dlg_set_offset/
/home/nao/.local/share/PackageManager/apps/dialog_shutdown/dlg_shutdown/
/home/nao/.local/share/PackageManager/apps/dialog_stop_talking/dlg_stop_talking/
/home/nao/.local/share/PackageManager/apps/dialog_store/dlg_ade/
/home/nao/.local/share/PackageManager/apps/dialog_switch_language/dlg_switch_language/
/home/nao/.local/share/PackageManager/apps/dialog_thank_you/dlg_thank_you/
/home/nao/.local/share/PackageManager/apps/dialog_touch/dlg_touch_head/
/home/nao/.local/share/PackageManager/apps/dialog_what_can_you_do/dlg_what_can_you_do/
/home/nao/.local/share/PackageManager/apps//dialog_reflex/reflex/
/home/nao/.local/lib/python2.7/site-packages/google/cloud/

Это означает, что он должен найти пакет Google. Как я могу решить эту проблему? Понятия не имею, как импортировать Google Speech API в проект Choregraphe.

РЕДАКТИРОВАТЬ: когда я выводю sys.path в локальный файл Python на роботе, я получаю следующее:

/var/persistent/home/nao
/home/nao/.local/lib/python2.7/site-packages/pip-9.0.1-py2.7.egg
/usr/lib/python27.zip
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/home/nao/.local/lib/python2.7/site-packages
/usr/lib/python2.7/site-packages
/usr/lib/python2.7/site-packages/PIL
/usr/lib/python2.7/site-packages/gst-0.10
/usr/lib/python2.7/site-packages/gtk-2.0

person moffeltje    schedule 08.06.2017    source источник
comment
Значит, вы имеете в виду, что он работает из скрипта Python в команде оболочки, но не из chroregraphe? 1. работает ли он из команды оболочки независимо от того, откуда вы запускаете интерпретатор python. 2. Не могли бы вы сказать нам, когда вы устанавливали пакет, чтобы мы могли проверить его по sys.path 3. перезапускаете ли вы naoqi один раз после установки пакета? иногда добавление новых папок в .local требует перезагрузки интерпретатора naoqi ... удачи ...   -  person Alexandre Mazel    schedule 09.06.2017
comment
Привет @AlexandreMazel, 1) Да, я могу выполнять скрипт python в разных местах. 2) Когда я запускаю `pip show google-cloud-speech`, я получаю Location: /var/persistent/home/nao/.local/lib/python2.7/site-packages 3) Я безуспешно перезапускал Pepper несколько раз. Я добавил в свой вопрос вывод sys.path из локального файла python (который кажется намного короче).   -  person moffeltje    schedule 15.06.2017


Ответы (1)


Я считаю, что лучший способ использовать в вашем проекте библиотеку python, которая не установлена ​​по умолчанию на роботе, - это добавить ее в свой проект. Таким образом, вы всегда будете уверены, что ваши зависимости установлены, когда ваши пакеты установлены на роботе. Возможно, это не идеальное решение, но это более надежное решение.

Ошибка: на самом деле, если вы пишете службу на python внутри своего проекта (файл python), вы можете отправить свои зависимости, поместив их рядом с файлом python. Но поведения не могут их использовать, и вам действительно нужно их установить.

Но что вы можете сделать, так это написать службу на python внутри вашего проекта, которая использует API Google и внутри вашего поведения. Xar запустить службу, использовать ее, чтобы делать то, что вам нужно, и остановить службу при выходе. (в идеале ваша служба могла бы остановиться, когда поведение прекратится)

person G. Vallat    schedule 18.08.2017