僕はSoftbank Pepperを動かすSDKとしてchoregraphe,pynaoqi,qimessaging.jsを主に使っています。
先日Ubuntu 14.04をUbuntu 16.04にアップグレードして、pynaoqiの環境構築を行って動かしてみたところ、2つのエラーが発生しました。
エラー1 : libqipython.soを開けませんでした
pynaoqiでUbuntu 16.04でaldebaranの公式マニュアルの通りに環境構築をしたときに以下のエラーが発生しました。
このエラーはpynaoqiディレクトリにあるlibqipython.soをqi/__init__.pyが発見できないというエラーです。
この問題は共有ライブラリのパスを通すことで解決できます。
エラー2 : libboost_python.1.55.0.soを開けませんでした
次に、
qi/__init__.pyを見てみると、
deps = [
"libboost_python.so",
"libboost_system.so",
"libboost_chrono.so",
"libboost_program_options.so",
"libboost_thread.so",
"libboost_filesystem.so",
"libboost_regex.so",
"libboost_locale.so",
"libboost_signals.so",
"libqi.so",
"libqitype.so",
"libqimessaging.so",
"libqipython.so"
]
というコードが発見できます。
また、
readelf -Ws libqipython.so | grep "boost"
を実行すると、*boost*python*のキーワードが入ったシンボルが発見できるかと思います。
pynaoqiのディレクトリにはlibboost_python.soがあるので、
__init__.py -> libqipython.so -> libboost_python.so -> libboost_python.so.1.55.0
という依存関係が判明しました。
この問題は、libboost-1.55.0の共有ライブラリをpynaoqi/以下に入れれば解決できます。
Ubuntu 16.04では
ls /usr/lib/x86_64-linux-gnu | grep "libboost"
apt-cache search libboost
を実行してみると、*1.58*というキーワードが発見できたことに対し、*1.55*のキーワードは存在しなかったので、ubuntu 16.04のPC内とaptレポジトリにはlibboost-1.58しか存在しないことがわかりました。
この場合は適当なライブラリに入っているlibboost_*.so.1.55.0の共有オブジェクトファイルを取ってくることで解決できます。
naoqi c++ sdkをダウンロードして展開し、lib/以下を見てみると、libboost_*.so.1.55.0の共有オブジェクトが発見できるので,
cp -a path/to/naoqicpp/lib/*.so*.1.55.0 /path/to/pynaoqi
を実行することによってこの問題を解決できます。
これで
>> import naoqi
が成功するとおもいます。
この記事はSoftbank Robotics Community Wikiにも投稿しています。(英語)
https://community.ald.softbankrobotics.com/en/forum/import-issue-pynaoqi-214-ubuntu-7956#node-12298
先日Ubuntu 14.04をUbuntu 16.04にアップグレードして、pynaoqiの環境構築を行って動かしてみたところ、2つのエラーが発生しました。
エラー1 : libqipython.soを開けませんでした
pynaoqiでUbuntu 16.04でaldebaranの公式マニュアルの通りに環境構築をしたときに以下のエラーが発生しました。
>>> import naoqi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
import qi
File "/path/to/pynaoqi-python2.7-2.1.4.13-linux64/qi/__init__.py", line 72, in <module>
from _qi import Application as _Application
ImportError: libqipython.so: cannot open shared object file: No such file or directory
このエラーはpynaoqiディレクトリにあるlibqipython.soをqi/__init__.pyが発見できないというエラーです。
この問題は共有ライブラリのパスを通すことで解決できます。
export LD_LIBRARY_PATH="/path/to/naoqi:$LD_LIBRARY_PATH"
sudo ldconfig
を実行することで解決できます。
エラー2 : libboost_python.1.55.0.soを開けませんでした
次に、
ImportError: libboost_python.1.55.0.so: cannot open shared object file: No such file or directory
というエラーが発生しました。qi/__init__.pyを見てみると、
deps = [
"libboost_python.so",
"libboost_system.so",
"libboost_chrono.so",
"libboost_program_options.so",
"libboost_thread.so",
"libboost_filesystem.so",
"libboost_regex.so",
"libboost_locale.so",
"libboost_signals.so",
"libqi.so",
"libqitype.so",
"libqimessaging.so",
"libqipython.so"
]
というコードが発見できます。
また、
readelf -Ws libqipython.so | grep "boost"
を実行すると、*boost*python*のキーワードが入ったシンボルが発見できるかと思います。
pynaoqiのディレクトリにはlibboost_python.soがあるので、
__init__.py -> libqipython.so -> libboost_python.so -> libboost_python.so.1.55.0
という依存関係が判明しました。
この問題は、libboost-1.55.0の共有ライブラリをpynaoqi/以下に入れれば解決できます。
Ubuntu 16.04では
ls /usr/lib/x86_64-linux-gnu | grep "libboost"
apt-cache search libboost
を実行してみると、*1.58*というキーワードが発見できたことに対し、*1.55*のキーワードは存在しなかったので、ubuntu 16.04のPC内とaptレポジトリにはlibboost-1.58しか存在しないことがわかりました。
この場合は適当なライブラリに入っているlibboost_*.so.1.55.0の共有オブジェクトファイルを取ってくることで解決できます。
naoqi c++ sdkをダウンロードして展開し、lib/以下を見てみると、libboost_*.so.1.55.0の共有オブジェクトが発見できるので,
cp -a path/to/naoqicpp/lib/*.so*.1.55.0 /path/to/pynaoqi
を実行することによってこの問題を解決できます。
これで
>> import naoqi
が成功するとおもいます。
この記事はSoftbank Robotics Community Wikiにも投稿しています。(英語)
https://community.ald.softbankrobotics.com/en/forum/import-issue-pynaoqi-214-ubuntu-7956#node-12298