从Intel Mac迁移到M1 Mac后Python程序ImportError报错如何解决?
解决M1 Mac上Python依赖架构不兼容问题
核心原因
错误提示明确显示Pillow的_imaging扩展库是x86_64架构,但M1 Mac需要arm64e架构。这是因为迁移过来的Python环境或依赖包是基于Intel平台编译的,无法在ARM架构的M1上正常运行。
修复步骤
检查当前Python架构
执行以下命令确认Python编译时使用的架构:python -c "import platform; print(platform.machine())"如果输出
x86_64,说明当前pyenv管理的Python 3.10.0是Intel版本,需要重新编译为ARM版本。重新编译ARM架构的Python 3.10.0
- 卸载现有Intel版本的Python:
pyenv uninstall 3.10.0 - 清理pyenv缓存(避免残留Intel编译文件):
rm -rf ~/.pyenv/cache/3.10.0* - 设置编译参数为ARM架构:
export ARCHFLAGS="-arch arm64" - 重新安装Python 3.10.0:
pyenv install 3.10.0 - 设置该版本为全局或项目局部使用:
# 全局设置 pyenv global 3.10.0 # 或项目目录局部设置 pyenv local 3.10.0
- 卸载现有Intel版本的Python:
彻底清理并重装依赖包
- 卸载现有的matplotlib和Pillow:
pip uninstall -y matplotlib pillow - 删除用户目录下残留的旧Pillow文件(若有):
rm -rf ~/.local/lib/python3.10/site-packages/PIL - 重新安装依赖:
此时pip会自动适配ARM架构下载或编译对应版本的包,无需添加pip install matplotlib--no-binary :all:参数。
- 卸载现有的matplotlib和Pillow:
验证修复结果
执行以下命令检查Pillow扩展库的架构:lipo -info $(python -c "import PIL; print(PIL.__path__[0])")/_imaging.cpython-310-darwin.so若输出
Non-fat file: ... is architecture: arm64,说明架构已正确适配。
内容的提问来源于stack exchange,提问作者Zanik
相关产品推荐
相关产品推荐

