M1芯片macOS下Spyder无法导入numpy 报架构不匹配错误
问题核心原因
报错里的mach-o, but wrong architecture是典型的二进制架构不匹配问题:
- 你的设备是M1系列arm64架构,终端下能正常导入numpy,说明终端调用的Python解释器、对应安装的numpy二者架构统一,可以正常运行
- Spyder当前运行的CPU架构、调用的Python解释器路径,和你终端使用的环境不一致,加载不同架构编译的numpy动态库时就会触发该报错
你之前重装numpy、加环境变量的操作没生效,本质是没有对齐Spyder和numpy的运行架构与环境路径。
排查&解决步骤
第一步:先确认两边环境的差异
打开Spyder,在Spyder的控制台执行以下代码,记录输出的架构值和Python路径:import sys, platform print("当前Spyder运行架构:", platform.machine()) print("当前Spyder调用的Python路径:", sys.executable)再回到终端执行以下命令,记录终端的架构值和Python路径:
arch which python3两组结果对比,只要架构一个是
arm64一个是x86_64,或者Python路径不一致,就会触发你遇到的问题。第二步:优先用同环境安装Spyder的方案解决(成功率最高)
你现在终端的Python环境已经可以正常跑numpy,直接把Spyder装到这个环境里即可,不要用官网下载的独立dmg安装包(独立版Spyder自带隔离的Python环境,和你系统装的Python不互通,且老版本多为x86_64架构):- 终端执行
pip3 uninstall spyder -y,卸载之前可能装错版本的Spyder - 执行
pip3 install spyder,把Spyder安装到当前终端可用的Python环境中 - 安装完成后直接在终端执行
spyder启动,不要从启动台点之前的旧Spyder图标启动
这时候Spyder和numpy共用同一个Python环境,架构完全匹配,可直接正常导入numpy。
- 终端执行
第三步:如果不想重装Spyder,修正架构启动配置
如果你用的是独立安装版Spyder:- 关闭Spyder,在访达-应用程序里找到Spyder图标,右键选择「显示简介」
- 检查「使用Rosetta打开」选项:如果你终端的架构是arm64,就取消这个勾选;如果终端是x86_64(开了Rosetta跑终端)就勾选这个选项,保证Spyder和终端的运行架构一致
- 重启Spyder后,在Spyder的设置里把Python解释器路径改成你之前终端查到的
which python3输出的路径,重启Spyder生效 - 如果还是报错,就在Spyder控制台里执行
!pip3 install numpy==1.22.4 --force-reinstall,给Spyder当前用的Python环境重装对应架构的numpy即可。
验证方法
修复完成后在Spyder控制台执行:
import numpy print(numpy.__version__) print(numpy.__file__)
能正常输出版本号、文件路径和终端下查询的numpy路径一致,就说明修复完成。
内容的提问来源于stack exchange,提问作者Vin Venture
相关产品推荐
相关产品推荐

