Sublime Text 3运行Python导入numpy报架构不兼容错误
问题描述
Sublime Text 3运行Python测试脚本时,导入numpy环节报错,但终端中直接执行同版本python3命令导入numpy无异常。
测试代码如下:
import sys print(sys.version) print ('hellow world') from numpy import*
当前使用的Python3构建系统配置:
{ "cmd": ["python3", "-i", "-u", "$file"], "file_regex": "^[ ]File \"(...?)\", line ([0-9]*)", "selector": "source.python" }
报错关键信息
运行后输出的核心报错片段:
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/numpy/core/_multiarray_umath.cpython-310-darwin.so, 0x0002): tried: '/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/numpy/core/_multiarray_umath.cpython-310-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
问题根因
这是Apple Silicon芯片Mac上常见的架构不匹配问题:
- 当前安装运行的Sublime Text 3是x86_64架构版本,通过Rosetta 2转译运行,启动Python子进程时会继承自身的x86_64运行环境,优先调用x86_64架构的Python解释器
- 终端默认加载的环境变量指向arm64架构的Python解释器,对应安装的numpy也是arm64版本,因此终端下导入无问题
- 报错明确提示当前找到的numpy二进制文件是arm64架构,但运行它的Python环境需要x86_64版本,两者架构不兼容导致C扩展加载失败
修复方案
任选以下一种方案即可解决问题:
- 方案1:更换为原生arm64版本的Sublime Text
安装适配Apple Silicon芯片的Sublime Text安装包,替换当前的x86版本,启动后会默认匹配arm64架构的系统环境,和终端调用的Python版本保持一致,无需额外修改配置即可正常导入numpy。 - 方案2:写死构建系统中的Python解释器绝对路径
先在终端执行which python3,复制输出的Python可执行文件完整绝对路径(通常arm64版本Python路径为/opt/homebrew/bin/python3或/Library/Frameworks/Python.framework/Versions/3.10/bin/python3),将原有构建系统配置中的python3替换为该完整路径,示例配置如下:
保存配置后重新选择该构建系统运行脚本即可。{ "cmd": ["/替换为你实际拿到的Python绝对路径", "-i", "-u", "$file"], "file_regex": "^[ ]File \"(...?)\", line ([0-9]*)", "selector": "source.python" } - 方案3:为x86架构的Python安装对应版本numpy
保留现有x86版本Sublime Text,在终端执行以下命令,为x86架构的Python解释器强制重装对应x86版本的numpy:
安装完成后Sublime即可正常加载numpy。arch -x86_64 /usr/local/bin/python3 -m pip install numpy --force-reinstall
内容的提问来源于stack exchange,提问作者Zixin Huang
相关产品推荐
相关产品推荐

