首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OSX10.9上安装pybluez或LightBlue (小牛队‎)

如何在OSX10.9上安装pybluez或LightBlue (小牛队‎)
EN

Stack Overflow用户
提问于 2014-03-09 08:13:34
回答 2查看 11.7K关注 0票数 5

我试图在OSX10.9上同时安装pybluez和LightBlue,但是我遇到了错误。有人在小牛身上安装了这些吗?

我得到了LightBlue的错误:

代码语言:javascript
复制
    === BUILD TARGET LightAquaBlue OF PROJECT LightAquaBlue WITH CONFIGURATION Release ===

Check dependencies
error: There is no SDK with the name or path '/Users/myname/Downloads/lightblue-0.4/src/mac/LightAquaBlue/macosx10.6'

** INSTALL FAILED **


The following build commands failed:
    Check dependencies
(1 failure)

我得到了pyBluez的错误:

代码语言:javascript
复制
    osx/_osxbt.c:676:5: error: unknown type name 'IOBluetoothDeviceInquiryRef'; did you mean 'IOBluetoothDeviceRef'?

    IOBluetoothDeviceInquiryRef inquiry;

    ^~~~~~~~~~~~~~~~~~~~~~~~~~~

    IOBluetoothDeviceRef

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/IOBluetooth.framework/Headers/IOBluetoothUserLib.h:34:47: note: 'IOBluetoothDeviceRef' declared here

typedef struct OpaqueIOBluetoothObjectRef *                     IOBluetoothDeviceRef;

                                                                ^

osx/_osxbt.c:688:17: error: unknown type name 'IOBluetoothDeviceInquiryRef'; did you mean 'IOBluetoothDeviceRef'?

                IOBluetoothDeviceInquiryRef inquiryRef,

                ^~~~~~~~~~~~~~~~~~~~~~~~~~~

                IOBluetoothDeviceRef

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/IOBluetooth.framework/Headers/IOBluetoothUserLib.h:34:47: note: 'IOBluetoothDeviceRef' declared here

typedef struct OpaqueIOBluetoothObjectRef *                     IOBluetoothDeviceRef;

                                                                ^

osx/_osxbt.c:703:19: warning: implicit declaration of function 'IOBluetoothDeviceInquiryCreateWithCallbackRefCon' is invalid in C99 [-Wimplicit-function-declaration]

    dd->inquiry = IOBluetoothDeviceInquiryCreateWithCallbackRefCon (&dd);

                  ^

osx/_osxbt.c:703:17: warning: incompatible integer to pointer conversion assigning to 'IOBluetoothDeviceRef' (aka 'struct OpaqueIOBluetoothObjectRef *') from 'int' [-Wint-conversion]

    dd->inquiry = IOBluetoothDeviceInquiryCreateWithCallbackRefCon (&dd);

                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

osx/_osxbt.c:705:5: warning: implicit declaration of function 'IOBluetoothDeviceInquirySetCompleteCallback' is invalid in C99 [-Wimplicit-function-declaration]

    IOBluetoothDeviceInquirySetCompleteCallback (dd->inquiry,

    ^

osx/_osxbt.c:717:5: warning: implicit declaration of function 'IOBluetoothDeviceInquiryStart' is invalid in C99 [-Wimplicit-function-declaration]

    IOBluetoothDeviceInquiryStart (dd->inquiry);

    ^

osx/_osxbt.c:721:5: warning: implicit declaration of function 'IOBluetoothDeviceInquiryDelete' is invalid in C99 [-Wimplicit-function-declaration]

    IOBluetoothDeviceInquiryDelete (dd->inquiry);

    ^

5 warnings and 2 errors generated.

error: command 'gcc' failed with exit status 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-09 22:54:42

PyBluez是windows唯一的

PyBluez工作在GNU/Linux和Windows (微软和Widcomm蓝牙堆栈)上。

看起来您安装了错误版本的LightBlue

代码语言:javascript
复制
Check dependencies 
error: There is no SDK with the name or path '/Users/myname/Downloads/lightblue-0.4/src/mac/LightAquaBlue/macosx10.6'

它正在为OSX10.6寻找一个文件。

下载并安装主发行版:https://github.com/postskolkovo/lightblue-0.4

如果您得到了错误:

代码语言:javascript
复制
Check dependencies
No architectures to compile for (ARCHS=$(NATIVE_ARCH_ACTUAL), VALID_ARCHS=i386 x86_64).

** INSTALL FAILED **

您必须打开setup.py并更改:

代码语言:javascript
复制
os.system("xcodebuild install -arch '$(NATIVE_ARCH_ACTUAL)' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES")

至:

代码语言:javascript
复制
os.system("xcodebuild install -arch 'i386' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES")

通过this discussion

编辑

实际上,当我尝试进口时,我在小牛身上得到了一个ImportError: Bundle could not be loaded

这似乎是64位计算机的修复方法:

代码语言:javascript
复制
os.system("xcodebuild install -arch 'x86_64' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES")

如果你遇到同样的事情可能是必要的。

票数 7
EN

Stack Overflow用户

发布于 2014-11-11 14:30:48

还有另外一个版本,特别是MacOSX10.8 https://github.com/0-1-0/lightblue-0.4。我也可以在OSX10.10Yosemite下运行这个版本。

我只需按照setup.py文件中的以下行进行更改:

代码语言:javascript
复制
os.system("xcodebuild install -arch 'x86_64' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES")

然后,我在/Library/Python/2.7/site-packages/lightblue/_lightblue.py中插入了以下两个方法:

deviceInquiryDeviceNameUpdated_device_devicesRemaining_(self,发送者,设备,devicesRemaining):通过

deviceInquiryUpdatingDeviceNamesStarted_devicesRemaining_(self,发件人,devicesRemaining):通过

在下列建筑之后:

代码语言:javascript
复制
_AsyncDeviceInquiry(Foundation.NSObject):

完整的代码是:

代码语言:javascript
复制
class _AsyncDeviceInquiry(Foundation.NSObject): 

# NSObject init, not python __init__
def init(self):
    try:
        attr = _IOBluetooth.IOBluetoothDeviceInquiry
    except AttributeError:
        raise ImportError("Cannot find IOBluetoothDeviceInquiry class " +\
            "to perform device discovery. This class was introduced in " +\
            "Mac OS X 10.4, are you running an earlier version?")

    self = super(_AsyncDeviceInquiry, self).init()
    self._inquiry = \
        _IOBluetooth.IOBluetoothDeviceInquiry.inquiryWithDelegate_(self)

    # callbacks
    self.cb_started = None
    self.cb_completed = None
    self.cb_founddevice = None

    return self

def deviceInquiryDeviceNameUpdated_device_devicesRemaining_(self, sender, device, devicesRemaining):
    pass

def deviceInquiryUpdatingDeviceNamesStarted_devicesRemaining_(self, sender, devicesRemaining):
    pass

最后一步是在同一个文件中修改这一行:

代码语言:javascript
复制
deviceInquiryComplete_error_aborted_, signature="v@:@iB")

代码语言:javascript
复制
deviceInquiryComplete_error_aborted_, signature="v@:@iZ")

对我来说很好!

希望这是一个有帮助的帖子。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22279913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档