2

OS X 10.8 用の LightBlueの Nickolay Yegorov のポートを使用しています。モジュールをインポートするとすぐにlightblue、次のエラーが発生します。

Traceback (most recent call last):
  File "commander.py", line 3, in <module>
    import lightblue
  File "/usr/local/lib/python2.7/site-packages/lightblue/__init__.py", line 160, in <module>
    from _lightblue import *
  File "/usr/local/lib/python2.7/site-packages/lightblue/_lightblue.py", line 397, in <module>
    class _AsyncDeviceInquiry(Foundation.NSObject):
TypeError: Error when calling the metaclass bases
    class _AsyncDeviceInquiry does not correctly implement protocol IOBluetoothDeviceInquiryDelegate: the signature for method deviceInquiryComplete:error:aborted: is v@:@iB instead of v@:@iZ

バージョンの不一致があるようです。この問題の既知の修正方法はありますか?

4

1 に答える 1

6

Yegorov のリポジトリsrc/mac/_lightblue.pyからソース内のファイルを開きます。行 467 を見つけます (次のようになります)。

deviceInquiryComplete_error_aborted_ = objc.selector(
    deviceInquiryComplete_error_aborted_, signature="v@:@iB")

v@:@iB文字列を に変更しますv@:@iZ。このソースから LightBlue を再インストールします。

cd <lightblue_root> && sudo python setup.py install

これにより、署名エラーが解決されるはずです。

バイナリ

dlamblinは、この修正を含むバイナリを要求しました。これが、 Python 2.7.4 を使用して OS X 10.8.2 用にビルドされたLightAquaBlue.framework/Library/Frameworksの です ( に挿入)。

于 2013-04-11T04:01:06.327 に答える