pip安装第三方包构建依赖失败 setup.py egg_info阶段报错
问题根因
从报错路径可以看出,你当前调用的是MSYS2提供的mingw64版本Python,两个安装报错是独立原因,和pip本身、setuptools版本没有直接关系:
- 安装
unroll报错403:该包最后一次更新是2016年,属于已经停止维护的老旧包,其setup.py中调用的远古版ez_setup硬编码了HTTP协议的PyPI源地址,而现在PyPI已经全量强制HTTPS访问,直接被拦截返回403;同时该包原生仅支持Python2,本身就不兼容你当前的Python3.9环境。 - 安装
pandas报VC版本不支持错误:当前mingw环境下的pip默认拉取pandas源码包本地编译,编译时setuptools会自动查找Windows原生MSVC编译链,而mingw环境下识别到的VC版本为6.0,早已被新版setuptools淘汰,不支持该版本的编译配置,因此直接抛出异常。
之前安装Jupyter Notebook能正常运行,是因为Jupyter是纯Python编写的软件,没有需要本地编译的C扩展模块,只要核心文件复制完成就能启动,不会触发编译链相关的校验。
修复方案
根据你实际的使用需求二选一操作即可:
方案1:使用官方原生Windows版Python(日常开发推荐)
- 打开命令提示符执行
where python,如果输出的第一条路径是C:\msys64\mingw64\bin\python.exe,说明MSYS2的Python路径在系统环境变量中优先级更高,覆盖了官方Python。 - 打开系统环境变量编辑面板,在
Path变量中将MSYS2相关的C:\msys64\mingw64\bin条目移动到官方Python安装路径的下方,或者直接删除该条目(如果不需要用MSYS2的话)。 - 重新打开命令提示符,执行
pip --version确认输出的路径指向官方Python的安装目录,而非MSYS2路径。 - 直接执行
pip install pandas即可,此时pip会自动下载官方预编译好的whl安装包,不需要本地编译,不会触发编译链错误。 - 针对
unroll包:由于该包原生不支持Python3且源地址失效,没有直接安装的方法,如果确实需要使用,要么手动修改包源码删除ez_setup相关的过时逻辑、适配Python3语法后本地安装,要么寻找功能相同的替代包。
方案2:保留MSYS2 mingw64环境使用
- 不要通过pip安装带C扩展的包,直接使用MSYS2自带的pacman包管理器安装预编译好的版本:打开MSYS2的mingw64终端,执行
pacman -S mingw-w64-x86_64-python-pandas即可完成pandas安装。 unroll包的问题和方案1中一致,该包本身已经停止维护,无法直接通过pip安装,需要自行修改源码适配。
内容的提问来源于stack exchange,提问作者ANIKET KUMAR
相关产品推荐
相关产品推荐

