Help us understand the problem. What is going on with this article?

Pepperアプリにモジュールをいれる

More than 5 years have passed since last update.

概要

Pepperに標準インストールされていないpythonモジュールを使いたい場合の手順

環境

  • Mac OS X 10.10
  • Choreagraphe 2.3.1.25

手順

pipを使ってモジュールをインストールします。
pipが入ってない場合はインストール

$ brew install pip

1. pipでダウンロードする

pip install [module] --no-install --no-buildが使えなくなってたので
-dオプションをつかう

2. ダウンロードしたファイルを解凍する

tarで落ちてくるのでコマンドとかで解凍

$ pip install [module] -d ./

3. プロジェクトにつっこむ

Choregrapheのプロジェクトファイルから
+ マークでmoduleを追加する用のディレクトリを追加
ここではlibと名前をつけます。

4. アプリ内でモジュールのディレクトリをsys.pathに追加する

追加用のボックスを作成します。

import sys
import os

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)
        self.path = ALFrameManager.getBehaviorPath(self.behaviorId) + "/lib"

        if self.path not in sys.path:
            sys.path.append(self.path)

    def onUnload(self):
        sys.path.remove(self.path)

    def onInput_onStart(self):
        pass

GithubのボックスライブラリにAddLibというボックスを追加してます。

pythonではsys.pathにappendしたディレクトリにあるモジュールを
importできるようになるので先ほど追加したlibディレクトリのパスを追加しています。
AddLibボックスはrootにあるbehaviorように作ってあります。

また、Unload時にはパスを削除するようにしているので
rootに配置することをお勧めします。

5. ボックス内でimport

importする場合はボックスのclass外に書いてしまうと
起動時に走るロード処理でsys.path.appendが呼ばれる前にimportしようとしてしまうので
classのメソッド内にimportを記述するようにしてください。

Github
https://github.com/hws-hitorobo/custom_box

hws-hitorobo
株式会社 ヘッドウォータースのロボット開発部門のqiitaです。 ロボットに関する開発のtipsを投稿しています。 http://headwaters.co.jp
http://headwaters.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away