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

PyInstaller打包含PyBluez的Python脚本时提示widcomm.py缺失

PyInstaller 打包 PyBluez 0.30 脚本报 widcomm.py 缺失解决方案

报错根因

PyBluez 0.30 的 Windows 平台安装包为 egg 压缩格式,PyInstaller 扫描依赖时会按源码目录结构检索全量蓝牙栈适配文件,但该版本 Windows 发行版已经裁剪了几乎淘汰的 Widcomm(博通)蓝牙栈适配代码,未内置widcomm.py文件,强制检索时直接触发文件不存在报错。该问题仅在打包阶段触发,不影响脚本本身在Python环境下的正常运行。

解决步骤

  • 方案一(最快,1分钟解决):
    1. 定位到Python第三方包目录:C:\Users\X\Python3\lib\site-packages\,找到pybluez-0.30-py3.10-win-amd64.egg文件,将后缀名修改为.zip后解压到当前目录,解压完成后该目录下会生成独立的bluetooth源码文件夹。
    2. 进入解压得到的bluetooth文件夹,新建名为widcomm.py的空白文本文件。Windows 10/11环境下PyBluez默认调用微软官方蓝牙栈和ESP32通信,不会触发Widcomm栈相关逻辑,空白占位文件仅用于通过PyInstaller的依赖扫描,不会影响程序实际功能。
    3. 回到脚本所在目录重新执行打包命令即可,可附加参数过滤无用依赖减小生成的exe体积:
      pyinstaller --onefile scriptname.py
      
    4. 如果打包后运行exe提示蓝牙模块加载失败,追加参数把bluetooth目录手动打包进程序:
      pyinstaller --onefile scriptname.py --add-data "C:\Users\X\Python3\lib\site-packages\bluetooth;bluetooth"
      
  • 方案二(无需手动改文件):
    卸载当前通过二进制包安装的PyBluez,从源码重新安装,源码包会包含全量适配文件(含不会被实际调用的widcomm.py),执行以下命令后直接打包即可:
    pip uninstall -y pybluez
    pip install pybluez==0.30 --no-binary :all:
    

验证提示:打包完成后建议在无Python环境的Windows设备上测试蓝牙连接、数据收发功能,确认ESP32通信流程正常即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:39:26