Python 3.9项目pyarrow依赖构建失败 无法生成wheel包问题咨询
问题根因分析
- PyPI包索引侧元数据异常:该问题恰好对应2021年10月pyarrow官方同步5.0.0版本包时的已知故障,当时对应Python3.9、x86_64架构的
pyarrow-5.0.0-cp39-cp39-manylinux2014_x86_64.whl包的元数据短暂从PyPI索引中消失,pip无法匹配到符合当前构建环境的预编译wheel包时,会默认回退到下载源码压缩包(.tar.gz)尝试本地编译。 - pip版本兼容问题:如果构建环境的pip版本低于20.3,对manylinux2014标签的识别存在缺陷,即使PyPI存在对应wheel包也会无法匹配,自动触发源码下载逻辑。
- 构建环境架构变更:如果你的构建节点从x86_64架构切换为arm64等其他架构,pyarrow 5.0.0未提供对应架构的Python3.9预编译wheel,也会触发源码下载流程。
源码编译失败原因
pyarrow源码编译依赖系统级基础组件(包括cmake、gcc、Apache Arrow C++核心库等),你的构建环境未预装这些依赖,导致PEP 517构建流程直接报错退出。
修复方案
- 强制pip仅拉取预编译包:调整安装命令为
pip install --only-binary :all: -r requirements.txt,该参数会要求pip只安装预编译wheel包,找不到匹配包时直接报错,不会触发源码编译逻辑。 - 固定安装稳定版本:在requirements.txt中将pyarrow的版本指定为4.0.1,该版本的Python3.9预编译wheel包元数据稳定无异常,可直接拉取安装。
- 预装编译依赖:如果必须使用5.0.0版本源码编译,提前在构建环境安装系统依赖,Debian/Ubuntu系系统执行
apt install -y cmake build-essential libarrow-dev,CentOS/RHEL系系统执行yum install -y cmake gcc-c++ arrow-devel后,再执行pip安装命令。
内容的提问来源于stack exchange,提问作者Simon Tower
相关产品推荐
相关产品推荐

