OS X 10.8上的LightBlue:方法签名不匹配

Jon*_*ier 2 python macos bluetooth iobluetooth lightblue

我正在使用Nickolay Yegorov的LightBlue 端口用于OS X 10.8.导入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
Run Code Online (Sandbox Code Playgroud)

似乎可能存在版本不匹配.这个问题有一个已知的解决方案吗?

Jon*_*ier 6

src/mac/_lightblue.pyYegorov的回购中打开源文件.找到第467行(如下所示):

deviceInquiryComplete_error_aborted_ = objc.selector(
    deviceInquiryComplete_error_aborted_, signature="v@:@iB")
Run Code Online (Sandbox Code Playgroud)

将字符串更改v@:@iBv@:@iZ.从此来源重新安装LightBlue:

cd <lightblue_root> && sudo python setup.py install
Run Code Online (Sandbox Code Playgroud)

这应该解决签名错误.

二进制

dlamblin请求使用此修复程序的二进制文件.这是我的LightAquaBlue.framework,用于OS X 10.8.2和Python 2.7.4(放入/Library/Frameworks).