pytorch与numpy版本冲突本质是abi不匹配导致的运行时崩溃,降级numpy至1.x(如1.26.4或1.21.2)是最可靠解法,尤其在m1/m2 mac或python≥3.10环境下;pip install torch会默认拉取最新numpy(如2.1.1),而numpy 2.x彻底重构abi,致使所有基于1.x编译的c扩展(含pytorch)直接报错崩溃。

PyTorch 与 NumPy 版本冲突不是“装不上”的问题,而是 ABI 不匹配导致的运行时崩溃——降级 NumPy 到 1.x 是当前最可靠解法,尤其在 M1/M2 Mac 或 Python ≥3.10 环境下。
为什么 pip install torch 会悄悄带坏 NumPy
PyTorch 的 wheel 包在构建时绑定了特定 NumPy ABI(比如 1.21.x),但 pip 默认安装最新版 numpy(如 2.1.1),而 NumPy 2.x 彻底重构了 ABI,所有用 1.x 编译的 C 扩展(包括 PyTorch 自身)都会直接报错:A module that was compiled using NumPy 1.x cannot be run in NumPy 2.1.1。这不是警告,是硬性 crash。
常见表现:
- 导入
torch时触发ImportError或AttributeError: module 'numpy' has no attribute 'ndarray' - 运行中突然卡死或抛出
UserWarning: Failed to initialize NumPy -
pip show numpy显示 2.x,但conda list里可能还残留旧版缓存
Mac M1/M2 上必须手动锁死 NumPy 版本
M1/M2 的 PyTorch CPU 版(torch、torchaudio)至今未适配 NumPy 2.x ABI。官方 wheel 仍基于 NumPy 1.21–1.26 构建。Python 3.10+ 环境下尤其危险,因为 pip 默认倾向装 2.x。
实操步骤:
- 先卸载:
pip uninstall numpy -y - 再装兼容版(选其一):
pip install numpy==1.26.4 --no-cache-dir(适配 PyTorch 2.3+)pip install numpy==1.21.2 --no-cache-dir(适配 PyTorch 1.12–2.0) - 验证 ABI 是否对齐:
python -c "import numpy as np; print(np.__abi_version__)"; python -c "import torch; print('OK')"—— 若第二行不报错,说明通过
conda 环境里别信 conda install pytorch 自动拉取的 numpy
conda 安装 PyTorch 时,常把 numpy 当作间接依赖自动升级到 2.x(尤其在 conda-forge channel 下)。即使你指定了 python=3.9,它也可能无视 ABI 兼容性。
安全做法:
- 创建环境时加约束:
conda create -n pt-env python=3.9 numpy=1.21.2 -y - 再单独装 PyTorch:
pip install torch torchvision torchaudio(不用 conda 装 torch) - 如果已污染,执行:
conda install numpy=1.26.4 -c conda-forge --force-reinstall,再pip install --force-reinstall torch
Python 3.12+ 用户要特别注意 numpy==1.26.4 这个临界点
NumPy 1.26.4 是最后一个同时支持 Python 3.12 和 PyTorch 2.3+ 的 1.x 版本。高于它的 1.27.x 不支持 3.12;低于它的 1.25.x 在某些 PyTorch 2.3 操作中会触发 DeprecationWarning 并影响 torch.compile。不要试图用 numpy>=2.0 强行覆盖——PyTorch 的 C++ 后端还没跟进。
容易被忽略的一点:Jupyter kernel 启动后会缓存已加载的 numpy 模块。改完版本必须重启 kernel,否则 import numpy 看到的仍是旧 ABI。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











