【问题标题】:Cannot import python module within Choregraphe on Pepper无法在 Pepper 的 Choregraphe 中导入 python 模块
【发布时间】:2017-06-08 13:48:20
【问题描述】:

我已经按照official Google tutorial,通过SSH在Pepper机器人上安装了谷歌语音API。

为了测试它,我创建了一个文件 speechTest.py,我在其中导入 API,如下所示:

from google.cloud import speech

这行得通!到现在为止还挺好。但是当我想在 Choregraphe 的 Python 框中做同样的事情时,问题就出现了;当我收到错误提示时:

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

我尝试了raised in the community 的解决方案,但没有成功。当我从 Python in Choregraphe 框中打印 sys.path 时,我得到:

[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 项目。

编辑:当我在机器人的本地 Python 文件中输出 sys.path 时,我得到了这个:

/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

【问题讨论】:

  • 所以你的意思是它可以在 shell 命令中的 python 脚本中工作,而不是 chroregraphe ? 1.无论您从哪里启动python解释器,它是否都可以从shell命令工作。 2. 你能告诉我们你是否安装了包,所以我们可以从 sys.path 中检查它是否可见 3. 你是否在安装包后重新启动 naoqi 一次?有时在 .local 中添加新文件夹需要重新加载 naoqi 解释器......祝你好运......
  • 嗨@AlexandreMazel,1) 是的,我可以在不同的位置执行python 脚本。 2) 当我运行 `pip show google-cloud-speech` 时,我得到Location: /var/persistent/home/nao/.local/lib/python2.7/site-packages 3) 我已经重启了 Pepper 几次,但都没有运气。我在我的问题中添加了来自本地 python 文件(看起来要短得多)的sys.path 的输出。

标签: python nao-robot pepper choregraphe


【解决方案1】:

我相信在项目中使用默认未安装在机器人上的 python 库的最佳方法是将其添加到项目中。 这样,当您的软件包安装在机器人上时,您始终可以确保安装了您的依赖项。它可能并不理想,但更可靠的解决方案。

勘误: 实际上,如果您在项目(python 文件)中使用 python 编写服务,则可以通过将依赖项放在 python 文件旁边来发送依赖项。 但是行为不能使用它们,你确实需要安装它们。

但是您可以做的是在您的项目中使用 google API 和您的 behavior.xar 中的 python 编写一个服务,启动该服务,使用它来执行您需要的操作,并在退出时停止该服务。 (理想情况下,您的服务可以在行为停止时自行停止)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2020-07-02
    • 2022-09-27
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多