Pepper/Nao中级教程:第六章 Choregraphe写App时缺少Python lib库时如何解决

关于Naoqi之家

欢迎访问Naoqi之家,一个提供Pepper/Nao机器人中文开发手册的站点。
http://www.naoqi.net

6.1 目标

Choregraphe程序中往往会调用第三方的Python lib库。
但是Pepper处于安全考虑,不允许通过pip install 的方式安装Python lib库。
这时就会报出类似如下错误。
Pepper/Nao中级教程:第六章 Choregraphe写App时缺少Python lib库时如何解决
我们可以通过自己手动下载lib库的方式解决。
下面以缺少requests的lib库为例,介绍如何安装。

6.2 实践

6.2.1 下载requests的lib库

点击下面的链接下载
https://github.com/kennethreitz/requests/archive/v2.21.0.zip
解压后,对解压包中的requests文件夹拷贝(Ctrl + C)备用。
Pepper/Nao中级教程:第六章 Choregraphe写App时缺少Python lib库时如何解决

6.2.2 新建Choregraphe工程

  1. 新建Choregraphe工程
  2. 在工程中新建lib文件夹
  3. 保存工程到本地磁盘中。
  4. 将requests文件夹粘贴(Ctrl + V)到 工程下的lib文件夹下。
    Pepper/Nao中级教程:第六章 Choregraphe写App时缺少Python lib库时如何解决

6.2.3 注册Lib库到系统环境中

  1. 在Choregraphe的流程图中新建一个Python指令盒,如下图。 例如叫set path to folder。
    Pepper/Nao中级教程:第六章 Choregraphe写App时缺少Python lib库时如何解决
  2. 双击set path to folder的指令盒,按照下图编写程序。
    Pepper/Nao中级教程:第六章 Choregraphe写App时缺少Python lib库时如何解决

上图代码为。

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        self.pathModified = False

    def onUnload(self):
        if self.pathModified and self.folderName and self.folderName in sys.path:
            sys.path.remove(self.folderName)
        self.folderName = None

    def onInput_onStart(self):
        # 计算lib在机器人磁盘中的位置
        appFolder = self.behaviorAbsolutePath().replace(self.behaviorRelativePath(), "")
        self.folderName = os.path.join(appFolder, "lib")
        # 将lib注册到机器人Naoqi系统环境变量中
        if self.folderName not in sys.path:
            sys.path.append(self.folderName)
            self.pathModified = True

        self.onStopped()

    def onInput_onStop(self):
        self.onUnload() 
        self.onStopped() 
  1. 现在后面的Test Request指令盒就可以import 这个lib库了。