Python安装pandas出现Building wheel for numpy错误怎么解决

远山来客
远山来客
发布时间:2026-11-06| 10人浏览过
原创

详细解析Python使用pip安装pandas时卡在Building wheel for numpy并报错的原因,提供升级pip工具链、强制使用预编译wheel包、核对Python版本与位数、切换Conda通道及手动安装编译依赖等完整排查与解决步骤。

在命令行执行 pip install pandas 时,终端长时间停留在 Building wheel for numpy (pyproject.toml) ...,随后抛出 ERROR: Failed building wheel for numpy 并终止安装,是因为当前环境的 pip 没有找到与 Python 版本、操作系统或 CPU 架构匹配的 numpy 预编译二进制包(.whl 文件),退而下载了源码包(.tar.gz)尝试在本地编译,而系统又缺少 C/C++ 或 Fortran 编译器。解决这一问题不需要立即安装体积庞大的编译工具,绝大多数情况下,只需升级 pip 工具链并让其拉取官方预编译好的二进制 wheel 包,或调整 Python 与依赖包的版本组合即可直接完成安装。

为什么安装 pandas 会卡在编译 numpy

pandas 底层的数据计算高度依赖 numpy。当你运行 pip install pandas 时,pip 会先检查当前环境中是否已有满足版本要求的 numpy;如果没有,就会自动去软件源下载并安装它。

Python 第三方包通常有两种分发格式:一种是已经由官方在特定系统上编译好的二进制包(扩展名为 .whl,即 Wheel 格式),下载后直接解压即可使用;另一种是未编译的源代码压缩包(通常为 .tar.gz)。由于 numpy 包含大量 C 语言和 Cython 编写的底层扩展代码,一旦从源码构建,本地机器就必须具备完整的 C 编译器(如 Windows 下的 MSVC、Linux 下的 GCC、macOS 下的 Xcode Command Line Tools)以及构建脚本所需的头文件。普通开发环境往往没有配置这些编译组件,因此只要触发源码构建,就会在 Building wheel for numpy 阶段报错退出。

示例报错输出(命令终端截取片段):
Collecting pandas
  Using cached pandas-2.1.4.tar.gz (4.3 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
    Preparing metadata (pyproject.toml) ... done
Collecting numpy<2,>=1.22.4 (from pandas)
  Using cached numpy-1.26.2.tar.gz (15.7 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
   Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error
  ...
  ERROR: Failed building wheel for numpy
ERROR: Could not build wheels for numpy, which is required to install pyproject.toml-based projects

仔细观察上面的示例输出可以发现一个关键细节:Using cached numpy-1.26.2.tar.gz。后缀 .tar.gz 说明 pip 根本没有下载 .whl 文件。触发这种回退的原因主要有四类:pip 版本过旧不认识新版平台标签、刚发布的最新 Python 大版本尚无对应二进制包、安装了 32 位 Python 解释器,或者指定了过老的 pandas/numpy 历史版本。

Python安装pandas出现Building wheel for numpy错误怎么解决
图 1:pip 安装 pandas 时匹配预编译二进制包与回退源码编译的分流机制

标准排查与修复步骤(优先免编译方案)

按照从简到繁的顺序,先检查当前 Python 环境特征,再升级包管理工具并强制拉取二进制包,即可解决绝大多数报错。以下操作均在系统的命令行终端(Windows 的 CMD/PowerShell,或 macOS/Linux 的 Terminal)中执行;若你使用了虚拟环境(venv 或 conda),请先激活对应虚拟环境后再运行命令。

第一步:确认当前 Python 的版本与系统位数

在运行任何修复命令前,先执行以下单行命令,查看当前终端调用的 Python 具体版本、编译器架构与位数:

在终端执行命令:
python -c "import sys, platform; print(sys.version); print(platform.architecture())"
示例输出(正常 64 位环境):
3.11.8 (tags/v3.11.8:db85d51, Feb  6 2024, 22:03:32) [MSC v.1937 64 bit (AMD64)]
('64bit', 'WindowsPE')

请重点核对输出中的两项信息:

  • 位数是否为 64bit:如果第二行显示 ('32bit', ...),或者第一行包含 32 bit (Intel),说明你安装的是 32 位 Python。目前主流版本的 numpy 和 pandas 均已停止提供 32 位系统的预编译 .whl 包,继续使用 32 位 Python 必定触发源码编译报错。遇到此情况,请直接卸载 32 位 Python,重新安装 64 位(Windows installer (64-bit))版本。
  • Python 次版本是否过新或过旧:如果使用的是刚发布不久的预发布版或最新大版本(例如某些旧版 pandas 尚未适配的最新 Python 版本),或者已经停止维护的 Python 3.7/3.8,需要在后续步骤中调整版本范围。

第二步:升级 pip、setuptools 和 wheel 工具链

Python 官方自带的初始 pip 版本往往较低。旧版 pip 无法识别新版 numpy 采用的平台标签(如 Linux 下的 manylinux_2_17、macOS Apple Silicon 的 macosx_11_0_arm64)以及新版 pyproject.toml 构建协议,从而误判“没有可用的二进制包”并下载源码。先执行以下命令更新基础打包工具:

在终端执行命令:
python -m pip install --upgrade pip setuptools wheel
示例输出:
Requirement already satisfied: pip in ./venv/lib/python3.11/site-packages (22.0.4)
Collecting pip
  Downloading pip-24.0-py3-none-any.whl (2.1 MB)
...
Successfully installed pip-24.0 setuptools-69.5.1 wheel-0.43.0
注意:始终使用 python -m pip 而不是单独输入 pip。当系统中存在多个 Python 版本时,python -m pip 能确保升级和安装的包精准作用于当前 python 命令所对应的解释器,避免“升级了 A 环境的 pip,却在 B 环境装包”的错位问题。

第三步:强制仅使用预编译二进制包安装

升级完工具链后,加上 --only-binary=:all: 参数重新安装 pandas。该参数会明确要求 pip 只允许下载 .whl 二进制包,禁止回退下载 .tar.gz 源码包:

在终端执行命令:
python -m pip install --only-binary=:all: numpy pandas

如果网络访问官方 PyPI 较慢,可以同时附加国内镜像源参数(以清华大学开源软件镜像站为例):

结合镜像源执行命令:
python -m pip install --only-binary=:all: -i https://pypi.tuna.tsinghua.edu.cn/simple numpy pandas
示例输出(成功匹配 .whl 二进制包):
Collecting numpy
  Downloading numpy-1.26.4-cp311-cp311-win_amd64.whl.metadata (61 kB)
Collecting pandas
  Downloading pandas-2.2.2-cp311-cp311-win_amd64.whl.metadata (19 kB)
...
Downloading numpy-1.26.4-cp311-cp311-win_amd64.whl (15.8 MB)
Downloading pandas-2.2.2-cp311-cp311-win_amd64.whl (11.6 MB)
Installing collected packages: numpy, six, pytz, python-dateutil, tzdata, pandas
Successfully installed numpy-1.26.4 pandas-2.2.2 python-dateutil-2.9.0.post0 pytz-2024.1 six-1.16.0 tzdata-2024.1

可以看到,此时下载的文件名结尾变成了 .whl,整个过程不会再出现 Building wheel for numpy,数秒内即可完成安装。

Python安装pandas出现Building wheel for numpy错误怎么解决
图 2:排查环境、升级工具链并强制使用二进制包安装的操作流程

第四步:验证安装结果

安装提示 Successfully installed 后,在终端执行以下命令,确认 numpy 与 pandas 的底层 C 扩展均能正常加载:

在终端执行命令:
python -c "import numpy as np, pandas as pd; df = pd.DataFrame({'a': np.arange(3)}); print(np.__version__, pd.__version__); print(df)"
示例输出:
1.26.4 2.2.2
   a
0  0
1  1
2  2

只要能正常输出两个库的版本号以及三行 DataFrame 数据,说明安装已经彻底完成。

如果强制二进制安装提示“找不到匹配版本”怎么办

部分读者在执行第三步的 --only-binary=:all: 命令时,可能会收到另一条明确提示:ERROR: Could not find a version that satisfies the requirement numpy ... (from versions: none)。这说明软件源上确实不存在符合你当前版本限制的 .whl 文件。此时不要去掉 --only-binary 强行硬编,而是根据以下三种常见原因针对性调整。

情况一:在较高版本 Python 上锁定了旧版 pandas 或 numpy

打开项目中的 requirements.txt 或你输入的安装命令,检查是否固定了旧版本号(例如在 Python 3.12 环境执行 pip install pandas==1.3.5)。pandas 1.3.5 发布时 Python 3.12 尚未问世,它所依赖的旧版 numpy 自然没有为 Python 3.12 构建过预编译包。

不同 Python 版本对应的已提供预编译 Wheel 包的最低 numpy 与 pandas 主版本范围如下表所示:

Python 版本 有预编译 .whl 的 numpy 版本范围 有预编译 .whl 的 pandas 版本范围 建议处理方式
Python 3.8 1.17.3 ~ 1.24.4 0.25.3 ~ 2.0.3 安装时会自动选定上限版本;勿强行指定 numpy>=1.25
Python 3.9 1.19.3 ~ 2.0.x 1.1.3 ~ 2.2.x 直接安装最新稳定版,或指定 pandas>=1.2
Python 3.10 1.21.3 ~ 2.x 1.3.4 ~ 2.x 若 requirements.txt 低于此下限,需上调版本号
Python 3.11 1.23.2 ~ 2.x 1.5.0 ~ 2.x 移除旧版本限制,使用 pandas>=1.5.0
Python 3.12 1.26.0 ~ 2.x 2.1.1 ~ 2.x 必须使用 numpy>=1.26.0 且 pandas>=2.1.1
Python 3.13+ 2.1.0 及以上 2.2.3 及以上 不指定旧版本,或新建 Python 3.11/3.12 虚拟环境

如果你必须运行旧项目的代码、不能升级 pandas 版本,最稳妥的做法是使用 conda 或 pyenv 创建一个与当年项目匹配的 Python 版本虚拟环境(例如为 pandas 1.3.x 创建 Python 3.9 环境),而不是在 Python 3.12 下强行编译旧版源码。

情况二:使用 Conda 绕过 pip 的编译与平台限制

在 ARM 架构设备(如搭载 Apple M 系列芯片的 Mac、树莓派 Linux)或特定企业内网系统上,PyPI 上的 Wheel 包覆盖可能不全。此时改用 conda(Anaconda 或体积更小的 Miniforge/Miniconda)是最省心的替代方案。Conda 管理的是跨语言二进制包,不仅自带编译好的 numpy 和 pandas,还会一并打包底层所需的 OpenBLAS 或 MKL 数学核心库。

在 Conda 环境中执行安装命令:
conda install -c conda-forge numpy pandas

通过 conda-forge 通道安装时,全过程均为二进制文件解压与链接,不会调用本地 C/Fortran 编译器。

Python安装pandas出现Building wheel for numpy错误怎么解决
图 3:pip 预编译包、Conda 二进制通道与本地源码编译的依赖条件与适用场景对比

情况三:必须在特殊系统(如 Alpine 容器或特定架构)上从源码编译

如果你正在构建基于 Alpine Linux 的 Docker 镜像,或者运行在没有现成二进制包的特殊硬件架构上,确实需要从源码完成 Building wheel for numpy,则必须在操作系统层面补齐编译器、Python 开发头文件以及线性代数库。

  • Ubuntu / Debian 系统:在终端执行以下命令安装 GCC、GFortran、Python 头文件及 OpenBLAS 开发库,然后再运行 pip install pandas:
    sudo apt-get update
    sudo apt-get install -y build-essential gfortran python3-dev libopenblas-dev pkg-config
  • Alpine Linux(Docker 容器常见报错环境):Alpine 使用 musl libc 而非标准 glibc,如果未匹配到 musllinux 预编译包,需通过 apk 补齐编译依赖,或直接在 Dockerfile 中将基础镜像从 python:3.11-alpine 更换为基于 Debian 的 python:3.11-slim(强烈建议后者,可直接复用预编译 Wheel 且镜像体积增幅很小):
    apk add --no-cache build-base gfortran python3-dev openblas-dev pkgconf
  • Windows 系统:若报错末尾包含 error: Microsoft Visual C++ 14.0 or greater is required 且无法更换版本,需前往微软官方网站下载 Microsoft C++ Build Tools,在安装界面勾选“使用 C++ 的桌面开发”(Desktop development with C++),确保右侧可选组件中包含“MSVC v143 生成工具”与“Windows 10/11 SDK”,安装重启后再执行 pip 命令。
  • macOS 系统:在终端执行 xcode-select --install,在弹出的系统窗口中点击“安装”以配置 Xcode 命令行编译工具。

常见关联问题排查

在 PyCharm 中创建项目或点击安装时依然报同样错误

PyCharm 创建全新的 Virtualenv 环境时,有时会使用内置缓存的旧版 pip 和 setuptools。如果在 IDE 的图形界面点击安装 pandas 失败,可以打开 PyCharm 底部的 Terminal(终端) 面板(此时终端行首带有 (.venv) 标识),按前文第二步与第三步依次执行 python -m pip install -U pip setuptools wheel 和 python -m pip install --only-binary=:all: pandas,即可在当前项目的解释器中完成安装。

内网离线机器拷贝安装包时触发 Building wheel

在无外网服务器上,如果先在外网机器下载了源码包或未把依赖下全,离线安装时就会因为找不到本地 numpy 的 .whl 文件而尝试在线拉取或编译。正确的离线准备方法是在外网相同操作系统、相同 Python 版本的机器上运行 pip download,强制仅下载二进制包:

1. 在外网同环境机器下载全部二进制依赖包到 ./offline_pkgs 目录:
python -m pip download --only-binary=:all: -d ./offline_pkgs pandas
2. 将 offline_pkgs 文件夹拷贝至内网机器后,执行离线安装:
python -m pip install --no-index --find-links=./offline_pkgs pandas

--no-index 会禁止连接外网软件源,--find-links 则让 pip 直接从本地目录读取已经下好的 numpy、pytz、python-dateutil、tzdata 和 pandas 的 .whl 文件,不会触发任何编译步骤。

排查路径与解决方案总结

遇到 Building wheel for numpy 报错时,核心原则是“优先恢复二进制 Wheel 通道,仅在异构环境才配置本地编译器”。你可以对照下方总结图,根据终端报错的具体表现快速定位处理命令:

Python安装pandas出现Building wheel for numpy错误怎么解决
图 4:根据报错现象与环境特征快速选择修复方案
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。