Windows环境pip安装gevent-websocket时gevent构建失败问题求助
Windows系统gevent wheel构建失败解决方案
错误原因
该报错是旧版本gevent内置的libuv库头文件,与msys2/mingw64环境的系统头文件mstcpip.h中的_TCP_INITIAL_RTO_PARAMETERS结构体重复定义冲突导致,属于环境适配类问题。
可用解决方案
方案1:使用预编译二进制包(推荐,无需本地编译)
执行安装命令时强制pip拉取官方预构建的wheel包,跳过源码编译步骤:
pip install gevent-websocket --only-binary :all:
如果提示找不到对应版本的预编译包,可先安装适配性更高的指定版本gevent,再安装gevent-websocket:
pip install gevent==23.9.1 --only-binary :all: pip install gevent-websocket
方案2:修改源码解决冲突(适用于必须从源码编译的场景)
- 先下载gevent源码包到本地:
pip download gevent --no-binary :all:
- 解压下载的gevent源码压缩包,找到
deps/libuv/src/win/winapi.h文件,定位到struct _TCP_INITIAL_RTO_PARAMETERS的定义代码段,在前后添加条件编译判断:
#ifndef _TCP_INITIAL_RTO_PARAMETERS_DEFINED #define _TCP_INITIAL_RTO_PARAMETERS_DEFINED // 此处保留原有的结构体定义内容不要修改 #endif
- 保存修改后,在源码根目录执行本地安装:
pip install .
- 安装完成gevent后,再正常执行
pip install gevent-websocket即可。
方案3:切换编译环境
当前报错是mingw64的gcc编译环境导致,可切换为微软MSVC编译环境:安装Visual Studio的「桌面开发C++」工作负载后,在Visual Studio自带的Native Tools命令行终端执行安装命令,不会触发头文件冲突问题。
内容的提问来源于stack exchange,提问作者Chrish10r
相关产品推荐
相关产品推荐

