Mac M1上IPython内核导入NumPy时的arm64与x86_64架构兼容问题
问题核心
终端运行Python脚本正常,但VSCode/Spyder的IPython交互窗口导入NumPy时报错:
Original error was: dlopen(/PATHTOLIBRARY/Python/3.9/lib/python/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so, 0x0002): tried: '/PATHTOLIBRARY/Python/3.9/lib/python/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have (arm64), need (x86_64)))
本质是终端用的是arm64架构的Python,而IPython内核调用了x86_64版本,导致NumPy库架构不匹配。
解决步骤
1. 确认架构差异
- 终端执行命令,查看当前正常工作的Python架构:
输出应为python3 -c "import platform; print(platform.machine())"arm64。 - 在VSCode/Spyder的IPython交互窗口运行同样代码,若输出为
x86_64,则确认内核用错了架构。
2. 注册arm64专属IPython内核
用终端的arm64 Python执行以下命令:
# 升级ipykernel到适配版本 pip3 install --upgrade ipykernel # 注册arm64架构的内核 python3 -m ipykernel install --user --name=arm64-python39
完成后,在VSCode内核选择器中切换到arm64-python39;Spyder则在解释器设置里选中这个内核。
3. 确保编辑器为Apple Silicon版本
- VSCode:左上角点击「Visual Studio Code」→「关于Visual Studio Code」,确认架构为
Apple Silicon。若为x86版本,卸载后去官网下载Apple Silicon专属安装包。 - Spyder:直接前往官网下载Apple Silicon版本,避免使用x86通用版。
4. 重装arm64适配的NumPy
先卸载现有不兼容的NumPy,再用终端的arm64 Python重新安装:
pip3 uninstall -y numpy pip3 install numpy
此时安装的NumPy为arm64架构,与终端Python完全匹配。
5. Spyder额外配置
打开Spyder后,依次点击「工具」→「偏好设置」→「Python解释器」,选择终端中which python3输出的路径(例如/usr/local/bin/python3),确保Spyder调用的是arm64版本的Python。
内容的提问来源于stack exchange,提问作者eduardo-vitral

