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

如何在Windows下的Python3.6中激活socket.AF_BLUETOOTH?

解决Windows下Python3.6 socket模块缺少AF_BLUETOOTH的问题

我之前在Windows上折腾过Python蓝牙socket的坑,刚好能给你一套详细的操作步骤,帮你解决这个AttributeError: module 'socket' has no attribute 'AF_BLUETOOTH'的问题。

问题根源

Windows平台上官方预编译的Python3.6默认没有启用蓝牙socket相关的支持,所以socket模块里没有这些常量定义。要用上蓝牙功能,我们需要手动修改Python源码的头文件,然后重新编译Python。

详细操作步骤

1. 准备编译环境与源码

  • 安装对应版本的Visual Studio:Python3.6是用Visual Studio 2015 Update 3编译的,所以你需要安装这个版本(或者兼容的VS2017,记得勾选C++开发工具组件)。
  • 下载Python3.6源码:获取对应3.6.x版本的Python源码包,解压到本地任意目录(比如D:\Python36-src)。

2. 修改源码中的头文件与模块代码

第一步:修改Include/socket.h

打开源码目录下的Include/socket.h文件,在其他AF_*宏定义的附近,添加以下代码:

#define AF_BLUETOOTH 32
#define SOCK_RFCOMM 3
#define BTPROTO_RFCOMM 3

注:这些数值是Windows平台蓝牙socket的标准定义,不要随意修改。

第二步:修改Modules/socketmodule.c

打开Modules/socketmodule.c文件,找到socket模块常量定义的代码段(可以搜索{"AF_INET"定位到附近区域),添加以下几行:

{"AF_BLUETOOTH", INT2PY(AF_BLUETOOTH)},
{"SOCK_RFCOMM", INT2PY(SOCK_RFCOMM)},
{"BTPROTO_RFCOMM", INT2PY(BTPROTO_RFCOMM)},

3. 编译Python

  • 打开Visual Studio对应的命令提示符:比如安装VS2015的话,就打开VS2015 x64 Native Tools Command Prompt(要编译32位版本就选32位的提示符)。
  • 切换到Python源码目录:
    cd D:\Python36-src
    
  • 执行编译命令:
    PCbuild\build.bat -e
    

这个命令会编译生成带有完整扩展模块的Python版本,编译完成后,生成的python.exe和相关库文件会在PCbuild\amd64(64位)或PCbuild(32位)目录下。

4. 验证功能

找到编译好的python.exe,运行它后执行以下代码测试:

import socket
print(socket.AF_BLUETOOTH)
print(socket.SOCK_RFCOMM)
print(socket.BTPROTO_RFCOMM)

如果能正常输出对应的数值(32、3、3),就说明修改成功了,接下来你就可以使用蓝牙socket进行开发了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:40:00