MacBook Air M1运行Python脚本时遭遇numpy架构不兼容问题求助
问题描述
我在MacBook Air M1上运行Python脚本时遇到了numpy架构不兼容的错误:
运行命令:
python3 -u "/Users/kaiyuwei/Documents/graduation project/metaheuristics/run_CRO.py"
报错核心信息:
ImportError: dlopen(/Users/kaiyuwei/Library/Python/3.8/lib/python/site-packages/numpy/core/_multiarray_umath.cpython-38-darwin.so, 0x0002): tried: '/Users/kaiyuwei/Library/Python/3.8/lib/python/site-packages/numpy/core/_multiarray_umath.cpython-38-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
我尝试过pip install numpy --upgrade和python3 -m pip install --upgrade pip,但都提示依赖已满足,问题没有解决。
解决方案
我之前在M1 Mac上也碰到过完全一样的问题,本质是当前使用的Python是x86_64架构(来自Command Line Tools的版本),但numpy是适配arm64的版本,两者架构不匹配。下面是两种可行的解决办法:
方法1:安装M1原生arm64版本的Python(推荐)
这是最彻底的方案,用原生适配arm64的Python环境来避免架构冲突:
- 先安装Homebrew(如果还没装):
安装完成后记得按照终端提示,把Homebrew的路径加入环境变量(M1的Homebrew默认路径是/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"/opt/homebrew)。 - 安装原生arm64的Python:
brew install python - 确认当前使用的是Homebrew的Python:
输出应该是which python3/opt/homebrew/bin/python3,说明已经切换到原生arm64版本。 - 强制重新安装适配arm64的numpy:
python3 -m pip install --upgrade pip python3 -m pip install numpy --force-reinstall
方法2:用Rosetta转译运行终端,重新安装x86_64版本的numpy
如果不想更换Python环境,可以通过Rosetta让终端以x86_64模式运行,然后安装对应架构的numpy:
- 找到「终端」应用,右键点击→「显示简介」,勾选「使用Rosetta打开」。
- 打开新的终端窗口,运行以下命令强制重新安装x86_64版本的numpy:
python3 -m pip install numpy --force-reinstall - 之后运行脚本时,记得用这个Rosetta模式的终端窗口。
内容的提问来源于stack exchange,提问作者kaiyu wei




