Mac M1设备conda环境安装Python包及运行报错问题求助
问题根因
你遇到的illegal hardware instruction报错核心是架构不匹配,常见原因有三类:
- 安装x86版本Miniforge时使用了Rosetta终端,但后续运行pytest的终端未开启Rosetta,系统尝试在原生arm64环境执行x86架构的二进制文件,触发指令集不兼容报错
- 之前卸载arm64版本Miniforge不彻底,
~/.zshrc、~/.bash_profile等shell配置文件中还残留了arm64版conda的路径,优先级高于新安装的x86版conda,导致调用Python相关命令时触发混编错误 - 部分依赖包在x86 conda环境中安装时调用了本地arm64的编译工具链,生成了混合架构的二进制文件,执行时触发指令错误
可行解决方案
方案1:原生arm64环境方案(推荐,性能更高)
目前绝大多数常用Python包已经适配M1系列芯片,你遇到的onnxruntime无法安装的问题可以通过conda-forge渠道解决,无需切换x86架构:
- 彻底卸载当前x86版本的Miniforge,删除shell配置文件中所有和conda相关的路径配置
- 重新安装arm64版本的Miniforge,执行
conda config --add channels conda-forge确认添加社区源 - 创建新的conda环境后,优先使用
conda install命令安装依赖,不要直接用pip安装:- onnxruntime可直接通过
conda install onnxruntime安装,conda-forge已经提供了适配arm64架构的稳定版本 - 仅当conda源没有对应包时,再用pip补充安装
- onnxruntime可直接通过
- 所有操作都在原生arm64终端下完成即可,无需开启Rosetta
方案2:纯x86 Rosetta环境方案(兼容无arm64适配的特殊包)
如果你的依赖包含完全不支持arm64的特殊包,可以用纯x86环境避免架构混合问题:
- 在访达中找到你常用的终端应用(系统终端Terminal或iTerm2),右键选择「显示简介」,勾选「使用Rosetta打开」,完全关闭所有终端窗口后重新打开
- 执行
arch命令,确认返回结果为x86_64,代表当前终端为x86模拟环境 - 彻底清理所有残留的conda相关文件和配置:
rm -rf ~/miniforge3 sed -i '' '/conda/d' ~/.zshrc ~/.bash_profile ~/.profile - 重新安装x86版本的Miniforge,安装完成后重启终端,执行
conda info确认platform字段显示为osx-64 - 创建新的conda环境后,再安装所有依赖包,所有相关操作都必须在开启Rosetta的终端中执行,不要混合使用原生终端
验证方法
环境配置完成后,执行以下命令验证配置有效性:
- 执行
python -c "import onnxruntime; print(onnxruntime.__version__)"确认包可以正常导入 - 执行
pytest --version确认pytest可以正常运行,无硬件指令报错
内容的提问来源于stack exchange,提问作者beayze
相关产品推荐
相关产品推荐

