树莓派4使用bluepy库扫描蓝牙设备多场景报错求助
问题成因
- 权限报错:蓝牙低功耗扫描需要操作蓝牙适配器的底层管理权限,普通用户默认没有对应权限,所以执行
le on管理命令时被系统拒绝。 - sudo运行报错队列模块不存在:sudo默认调用系统默认的Python2环境,Python2的队列模块名为
Queue(首字母大写),而你安装的bluepy版本适配Python3,在Python2环境下导入queue(小写)模块失败。 - Pycharm运行报错:Pycharm默认以当前普通用户身份启动,没有蓝牙操作的管理员权限,因此触发权限不足报错。
- Python3运行找不到bluepy:你之前仅在Python2环境下安装了bluepy库,Python3的依赖库目录中没有该模块。
解决步骤
- 优先切换到Python3环境安装依赖,Python2已经停止维护,不建议继续使用:
# 先更新源并安装pip3 sudo apt update && sudo apt install python3-pip -y # 给Python3安装bluepy sudo pip3 install bluepy
- 运行脚本的两种可选方案:
- 方案1(临时):每次运行脚本时使用
sudo+python3的组合调用,避免权限和版本问题:
sudo python3 prova2.py
- 方案2(永久免sudo):给bluepy的底层执行工具赋予必要的网络权限,后续普通用户即可直接运行:
# 注意把命令中的3.*替换为你实际的Python3版本号,比如Python3.9就写3.9 sudo setcap 'cap_net_raw,cap_net_admin+eip' /usr/local/lib/python3.*/dist-packages/bluepy/bluepy-helper # 权限配置完成后直接用Python3运行即可 python3 prova2.py
- Pycharm运行适配:
如果需要在Pycharm中运行,要么执行sudo pycharm以管理员身份启动Pycharm后再运行脚本,要么完成上述setcap权限配置后,直接普通启动Pycharm即可正常运行。 - 前置检查(可选):
如果运行仍有问题,先确认蓝牙适配器已开启:
sudo bluetoothctl power on
内容的提问来源于stack exchange,提问作者user11989615
相关产品推荐
相关产品推荐

