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)
似乎可能存在版本不匹配.这个问题有一个已知的解决方案吗?
src/mac/_lightblue.py从Yegorov的回购中打开源文件.找到第467行(如下所示):
deviceInquiryComplete_error_aborted_ = objc.selector(
deviceInquiryComplete_error_aborted_, signature="v@:@iB")
Run Code Online (Sandbox Code Playgroud)
将字符串更改v@:@iB为v@:@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).