Pythonでlightblueを入れたときのなぐり書き
bluetooth通信をMacでするために必要なlightblueを入れる際に苦労したのでメモ。
環境
第一の壁
公式サイトから落としたファイルでやったときも試しましたが、そっちのエラーの方がイミフで解決不能だったので、githubから落とします。
適当なフォルダに移動してファイルを落としましょう。
$ cd python/tmp $ git clone https://github.com/0-1-0/lightblue-0.4
解凍します。
$ tar xzvf lightblue-0.4.tar.gz
解凍したら、そのフォルダに移動して、とその前に必要なパッケージを入れないといけません(どこかに書いてあったような気がするだけでいらないかもしれないです)。
$ pip install pyobjc
をしておいて下さい。 それでは
$ sudo python setup.py install
でインストールです。本来ならこれでうまくいくとおもうのですが、僕の場合はだめでした。
こんな具合でエラーが出れば僕と一緒です。
$ sudo python setup.py install running install running build running build_py running install_lib running install_egg_info Removing /***/***/***/lib/python2.7/site-packages/lightblue-0.4-py2.7.egg-info Writing /***/***/***/lib/python2.7/site-packages/lightblue-0.4-py2.7.egg-info Build settings from command line: ARCHS = $(NATIVE_ARCH_ACTUAL) DEPLOYMENT_LOCATION = YES DSTROOT = / INSTALL_PATH = /Library/Frameworks === BUILD TARGET LightAquaBlue OF PROJECT LightAquaBlue WITH CONFIGURATION Release === Check dependencies No architectures to compile for (ARCHS=$(NATIVE_ARCH_ACTUAL), VALID_ARCHS=i386 x86_64). ** INSTALL FAILED ** The following build commands failed: Check dependencies (1 failure)
正しい解決策かどうかわかりませんが、やってみたことを羅列しておきます。
- setup.pyのline66の
-arch 'x86_64'
を取り除く - src/mac/Lightblue/Lightblue.xcodeprojをXcodeで開き、Build SettingのArchitecturesのReleaseを
ppc i386
からNative Architecture of Build Machine (x86_64)
に変更 - 同じファイルについて、Build SettingのValid Architecturesを
i386 x86_64
からx86_64
のみに変更
これをしたら再び、
$ sudo python setup.py install
と唱えます。さあimport lightblue
と入力してみましょう!
何も言われなければ成功です!僕の場合はだめでした!
第二の壁
さてさきほどのコマンドでエラーがでてしまった僕ですが、エラー内容は以下のとおりです。
>>> import lightblue /***/***/***/lib/python2.7/site-packages/objc/_bridgesupport.py:643: RuntimeWarning: Error parsing BridgeSupport data for IOBluetooth: PyObjCRT_SkipTypeSpec: Got '0x29' at end of union encoding, expecting '0x29' warnings.warn("Error parsing BridgeSupport data for %s: %s" % (frameworkName, e), RuntimeWarning)
ただこのバグは解決済みのようでした。しかしpipで入れたもの(3.0.4)は解決前でしたので、
https://bitbucket.org/ronaldoussoren/pyobjcから最新のものを落としましょう。
そんでもってディレクトリ移動してインストール。
$ cd ronaldoussoren-pyobjc-**********/pyobjc-core $ sudo python setup.py install
エラーも吐かずに終えたので、import lightblue
を試したところ、無事に成功しました。