You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装PyBluez时wheel构建失败问题求助

解决PyBluez在Python 3.11下的安装失败问题

问题背景

尝试安装PyBluez时先后遇到两个错误:

  1. 编译阶段找不到bluetooth/bluetooth.h头文件
  2. 安装libbluetooth-dev后,又出现lvalue required as left operand of assignment编译错误

第一个错误的解决(已完成)

这个错误是缺少蓝牙开发依赖库,执行以下命令安装即可:

sudo apt-get install libbluetooth-dev

第二个错误的根源与解决

错误原因

PyBluez 0.23是较旧的版本,未适配Python 3.11中Py_TYPE宏的变更。在Python 3.11里,Py_TYPE不再是可直接赋值的左值,原代码中直接对指针使用Py_TYPE(&sock_type) = &PyType_Type;的写法会触发编译错误。

解决方案

提供三种可行方案,按需选择:

方案1:安装兼容Python 3.11的分支版本

使用维护更新的pybluez2包,它修复了Python 3.11的兼容性问题:

pip install pybluez2 --break-system-packages
方案2:手动修改源码编译安装
  1. 下载PyBluez源码包:
    pip download pybluez --no-deps
    
  2. 解压下载的PyBluez-0.23.tar.gz文件,进入解压后的目录
  3. 编辑bluez/btmodule.c文件,修改以下两行:
    • 将第2978行:Py_TYPE(&sock_type) = &PyType_Type; 改为:
      ((PyTypeObject*)&sock_type)->ob_type = &PyType_Type;
      
    • 将第2979行:Py_TYPE(&sdp_session_type) = &PyType_Type; 改为:
      ((PyTypeObject*)&sdp_session_type)->ob_type = &PyType_Type;
      
  4. 执行本地安装:
    pip install . --break-system-packages
    
方案3:降级Python版本

如果不需要Python 3.11的特性,可以降级到Python 3.10及以下版本,PyBluez 0.23原生支持这些版本。

内容的提问来源于stack exchange,提问作者Disguised Tiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:57:41