Pepper/Nao中级教程:第六章 Choregraphe写App时缺少Python lib库时如何解决
关于Naoqi之家
欢迎访问Naoqi之家,一个提供Pepper/Nao机器人中文开发手册的站点。
http://www.naoqi.net
6.1 目标
Choregraphe程序中往往会调用第三方的Python lib库。
但是Pepper处于安全考虑,不允许通过pip install 的方式安装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)备用。
6.2.2 新建Choregraphe工程
- 新建Choregraphe工程
- 在工程中新建lib文件夹
- 保存工程到本地磁盘中。
- 将requests文件夹粘贴(Ctrl + V)到 工程下的lib文件夹下。
6.2.3 注册Lib库到系统环境中
- 在Choregraphe的流程图中新建一个Python指令盒,如下图。 例如叫set path to folder。
- 双击set path to folder的指令盒,按照下图编写程序。
上图代码为。
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()
- 现在后面的Test Request指令盒就可以import 这个lib库了。