pybluez installation errors on Mac OS

匿名 (未验证) 提交于 2019-12-03 03:06:01

问题:

I tried to install pybluez using following commands.

pip install pybluez  sudo easy_install pybluez 

But for both commands I end up in errors.

Environment:

Mac OSX 10.9.1 Python 2.7 

Pip Logs :

cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -I/System/Library/Frameworks/IOBluetooth.framework/Headers -I/System/Library/Frameworks/CoreFoundation.framework/Headers -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c osx/_osxbt.c -o build/temp.macosx-10.9-intel-2.7/osx/_osxbt.o  clang: warning: argument unused during compilation: '-mno-fused-madd'  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 'cc' failed with exit status 1  ---------------------------------------- Cleaning up...   Removing temporary dir /private/var/folders/f0/ldyq8xbx0fvckg001kk64j7r0000gn/T/pip_build_~... Command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/f0/ldyq8xbx0fvckg001kk64j7r0000gn/T/pip_build_~/pybluez/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/f0/ldyq8xbx0fvckg001kk64j7r0000gn/T/pip-j1ASQD-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/f0/ldyq8xbx0fvckg001kk64j7r0000gn/T/pip_build_~/pybluez Exception information: Traceback (most recent call last):   File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/basecommand.py", line 122, in main     status = self.run(options, args)   File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/commands/install.py", line 279, in run     requirement_set.install(install_options, global_options, root=options.root_path)   File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/req.py", line 1380, in install     requirement.install(install_options, global_options, *args, **kwargs)   File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/req.py", line 699, in install     cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)   File "/Library/Python/2.7/site-packages/pip-1.5.2-py2.7.egg/pip/util.py", line 697, in call_subprocess     % (command_desc, proc.returncode, cwd)) InstallationError: Command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/f0/ldyq8xbx0fvckg001kk64j7r0000gn/T/pip_build_~/pybluez/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/f0/ldyq8xbx0fvckg001kk64j7r0000gn/T/pip-j1ASQD-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/f0/ldyq8xbx0fvckg001kk64j7r0000gn/T/pip_build_~/pybluez   **easy_install Logs**   Reading http://pypi.python.org/simple/pybluez/ Best match: PyBluez 0.20 Downloading https://pypi.python.org/packages/source/P/PyBluez/PyBluez-0.20.zip#md5=79fad332df63b67a5f9a8d25042fb2a8 Processing PyBluez-0.20.zip Running PyBluez-0.20/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Y5Y9H1/PyBluez-0.20/egg-dist-tmp-kwjDlw  clang: warning: argument unused during compilation: '-mno-fused-madd'  **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: Setup script exited with error: command 'cc' failed with exit status 1 

Any one able to install pybluez on Mavericks ?

On Mountain Lion also the same installation errors.

Edit :

Replaced IOBluetoothDeviceInquiryRef with IOBluetoothDeviceRef and got rid of the errors. and able to install on Mac because of the warnings.

Installed using sudo python setup.py install

Here is the output

running install running build running build_py running build_ext running install_lib running install_egg_info Removing /Library/Python/2.7/site-packages/PyBluez-0.20-py2.7.egg-info Writing /Library/Python/2.7/site-packages/PyBluez-0.20-py2.7.egg-info

When I tried to import bluetooth I got an exception

Here is the output

>>> import bluetooth Traceback (most recent call last): File "", line 1, in File "bluetooth/__init__.py", line 47, in from osx import * File "bluetooth/osx.py", line 3, in raise NotImplementedError NotImplementedError

Fllowing link mentioned about the error

python bluetooth discovery with pybluez

What should be done to install pybluez on Mac

回答1:

PyBluez is only for PC. Try lightblue

Download and install the master distribution: https://github.com/postskolkovo/lightblue-0.4

cd ~/Downloads/lightblue-0.4-master sudo python setup.py install 

If you get the error:

Check dependencies No architectures to compile for (ARCHS=$(NATIVE_ARCH_ACTUAL), VALID_ARCHS=i386 x86_64).  ** INSTALL FAILED ** 

you'll have to open up setup.py and change:

os.system("xcodebuild install -arch '$(NATIVE_ARCH_ACTUAL)' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES") 

to:

os.system("xcodebuild install -arch 'i386' -target LightAquaBlue -configuration Release DSTROOT=/ INSTALL_PATH=/Library/Frameworks DEPLOYMENT_LOCATION=YES") 

via this discussion



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!