Sparkfunのチュートリアル通りにubilinuxを入れたIntel Edisonにmraaを入れていたところつまずいたのでメモ.
起こったこと 1
Export Library Path for Pythonに示されているexportの文を.bashrcに書いて読み込んだらなんだか怒られた.
#いろいろな中身
export PYTHONPATH=$PYTHONPATH:$(dirname $(find /usr/local -name mraa.py))
怒られた内容としてはこんな感じ
$ source .bashrc
dirname: extra operand `/usr/local/lib/python2.7/site-packages/mraa.py'
Try `dirname --help' for more information.
応急処置
よくわからないけどdirnameのoperandがextraらしい.とりあえずdirnameに渡している値を確認してみる.
$ find /usr/local -name mraa.py
/usr/local/lib/i386-linux-gnu/python2.7/site-packages/mraa.py
/usr/local/lib/python2.7/site-packages/mraa.py
なんかmraa.pyが2ついるっぽい!
どっちを使えばいいのかよくわからないけれど,とりあえずふたつ目のほうが一般的っぽいディレクトリにいるのでこちらを.bashrcに直打ちしておく...!
#いろいろな中身
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages/mraa.py
そしてもう一度読み込み.今度はうまく行ったけどいいのかなぁ.
$ source .bashrc
(そういえばpythonのインストールディレクトリを~/.local以下に設定した気がするけどmraaはここにいていいのだろうか・・・!参考にしたのはこの記事)
応急処置ではmraaが読めない
そらきたpythonからmraaが読めていない.
Python 2.7.3 (default, Mar 14 2014, 11:57:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mraa
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mraa
やはり~/.local以下へ入れないといけない気がする.
~/.local以下へのmraaの入れなおし
ただ,入れてしまったmraaはmake uninstallしてもそんなのないって言って消えてくれない.
インストールした時の表示を見てちまちまと消していく..消したのは下記のとおり.
/usr/local/include/mraa.h
/usr/local/include/mraa.hpp
/usr/local/include/mraa
/usr/local/lib/i386-linux-gnu/pkgconfig/mraa.pc
/usr/local/lib/i386-linux-gnu/libmraa.so.0.8.1
/usr/local/lib/i386-linux-gnu/libmraa.so.0
/usr/local/lib/python2.7/site-packages/_mraa.so
/usr/local/lib/python2.7/site-packages/mraa.py
/usr/local/share/mraa
で.これが~/.local/以下に展開されるようにしたい.
調べてみると,cmakeの引数でこの辺り指定できたりするらしい.build/以下を消してもう一度cmakeやり直し.
$ rm -r build
$ mkdir build && cd $_
$ cmake .. -DBUILDSWIGNODE=OFF -DCMAKE_INSTALL_PREFIX=$HOME/.local
あとはmake, make installしたところ,さっきのファイルたちがうまいこと~/.local/以下に展開された.
たとえば /usr/local/include/mraa.h -> ~/.local/include/mraa.h
あとは,もともとPYTHONPATHに入れていたディレクトリなので.bashrcに書き加えたexportの一文を削除.
インタプリタで確認すると,ちゃんとインポートできる.
$ python
Python 2.7.3 (default, Mar 14 2014, 11:57:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mraa
>>>
めでたしめでたし.