Python3.11执行pip安装依赖时aiohttp编译报错求助
解决Python 3.11下安装aiohttp时
longintrepr.h找不到的错误 错误原因
Python 3.11移除了内部头文件longintrepr.h,而旧版本的aiohttp(或其依赖库如yarl)仍在代码中引用这个已被移除的文件,导致编译源码时失败。你遇到的报错和类似问题(如yarl编译时出现yarl/_quoting.c:196:12: 致命错误:找不到'longintrepr.h'文件 - 生成1个错误)本质原因完全相同。
解决办法
升级aiohttp到兼容Python 3.11的版本:
新版本的aiohttp已经适配了Python 3.11的改动,不再依赖longintrepr.h。可以直接执行:pip install aiohttp>=3.8.0或者修改
requirements.txt中的aiohttp版本号为>=3.8.0(或更高兼容版本),再重新执行pip install -r requirements.txt。安装预编译wheel包,跳过源码编译:
如果暂时无法升级aiohttp,可强制pip使用预编译的二进制包,避免源码编译环节:pip install --only-binary :all: aiohttp此命令会直接下载适配你系统的预编译包,不会触发源码编译,自然不会遇到头文件缺失问题。
临时降级Python版本:
若上述方案都无法实施,可暂时切换回Python 3.10.x版本,该版本保留了longintrepr.h,能正常完成依赖安装。等项目依赖库全部适配Python 3.11后再升级。
内容的提问来源于stack exchange,提问作者Anton Samokat
相关产品推荐
相关产品推荐

