当前位置:   article > 正文

[呆子^笔记]python环境使用Bluetooth笔记_pybluez安装

pybluez安装

文章综合自下列参考链接
参考链接:
(1)《Pybluez Win10系统安装教程(蓝牙通信模块pybluez,Python完美安装)》by caigen001

(2)《Python 安装蓝牙模块 PyBluez 问题总结》 by Starkly

(3)《python安装pybluez各种报错的解决历程记录》by Forrest King

一、环境搭建
根据百度查找多个经验,分为两种方式,
(一)下载编译好的扩展包进行按装
Unofficial Windows Binaries for Python Extension Packages
见参考链接(1),这里不再详述。
(二)用pip安装

pip install pybluez
  • 1

在Python3.9环境中会遇到
1、use_2to3 is invalid 错误
解决问题见参考链接(2)

pip install setuptools==57.5.0
  • 1

2、LINK : fatal error LNK1181: 无法打开输入文件“Irprops.lib”
解决问题见参考链接(2)
进入
“C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64”

3、Could not find the Windows Platform SDK
请自行安装Windows SDK。这里安装了Windows SDK 10版本。

4、OSError @ bluetooth.find_service()
更改完上述问题后,执行

pip install pybluez
  • 1

就可以显示成功安装pybluez 0.23 版本了。
但是运行示例程序:

import bluetooth

nearby_devices = bluetooth.discover_devices(lookup_names=True)
for addr, name in nearby_devices:
    print("  %s - %s" % (addr, name))
    services = bluetooth.find_service(address=addr)
    for svc in services:
        print("Service Name: %s"    % svc["name"])
        print("    Host:        %s" % svc["host"])
        print("    Description: %s" % svc["description"])
        print("    Provided By: %s" % svc["provider"])
        print("    Protocol:    %s" % svc["protocol"])
        print("    channel/PSM: %s" % svc["port"])
        print("    svc classes: %s "% svc["service-classes"])
        print("    profiles:    %s "% svc["profiles"])
        print("    service id:  %s "% svc["service-id"])
        print("")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在运行至bluetooth.find_service()处时,会报错"OSError"
下图转自参考链接(3)
图片转自参考连接(3)
此时重新安装pybluz 0.22版本

pip install pybluez==0.22
  • 1

安装时又会遇到 “Could not find the Windows Platform SDK ”问题。

这里查看pybluez的setup.py文件发现

def find_MS_SDK():
    candidate_roots = (os.getenv('ProgramFiles'), os.getenv('ProgramW6432'),
                       os.getenv('ProgramFiles(x86)'))
    if sys.version < '3.3':
        MS_SDK = r'Microsoft SDKs\Windows\v6.0A'  # Visual Studio 9
    else:
        MS_SDK = r'Microsoft SDKs\Windows\v7.0A'  # Visual Studio 10

    MS_SDK = r'Windows Kits\10'  # Visual Studio 10
    candidate_paths = (MS_SDK,
                       'Microsoft Platform SDK for Windows XP',
                       'Microsoft Platform SDK')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

windows SDK v7.0A 显然版本过于低了,因此只能将按装好的win SDK10 拷贝至c:\program files(x86)\Microsoft SDKs\Windows\v7.0A中;
或者重新安装win SDK时修改目标目录为上述目录就可以了。

至此,pybluez示例代码能够正常运行。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/620114
推荐阅读
相关标签
  

闽ICP备14008679号