You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS编译Arduino ESP32报错:fork/exec python3执行格式错误

解决MacOS下Arduino编译时Python exec格式错误问题

问题背景

昨日MacOS上Arduino IDE和VS Code编译Arduino程序均正常,今日全部编译失败,报错:

fork/exec /Library/Frameworks/Python.framework/Versions/3.11/bin/python3: exec format error
Compilation error: fork/exec /Library/Frameworks/Python.framework/Versions/3.11/bin/python3: exec format error

执行which python3返回路径/Library/Frameworks/Python.framework/Versions/3.11/bin/python3,但python --version显示为Python 3.10.6,怀疑是运行Docker后影响了Python环境。

排查与解决步骤

1. 检查Python 3.11二进制架构匹配性

MacOS的exec格式错误常因二进制架构与系统不匹配导致(比如Apple Silicon的arm64运行x86_64二进制且未启用Rosetta,或反之)。执行以下命令查看架构:

lipo -info /Library/Frameworks/Python.framework/Versions/3.11/bin/python3
  • 若你的Mac是Apple Silicon(arm64),但输出仅显示x86_64:需确保Rosetta已安装,或重新下载arm64版本的Python 3.11。
  • 若Mac是Intel(x86_64),但输出仅显示arm64:重新下载x86_64版本的Python 3.11。

2. 调整PATH环境变量优先级

当前系统PATH中Python 3.11的路径优先级高于系统默认的Python 3.10,导致Arduino工具链调用了有问题的3.11版本。

  • 临时测试:在终端执行以下命令,然后重新打开Arduino IDE/VS Code编译:
    export PATH=/usr/bin:$PATH
    
  • 永久生效:根据你使用的shell,编辑对应的配置文件:
    • zsh用户:编辑~/.zshrc,添加export PATH=/usr/bin:$PATH
    • bash用户:编辑~/.bash_profile或~/.bashrc,添加同样内容
      保存后执行source ~/.zshrc(或对应配置文件)使改动生效。

3. 重新安装Python 3.11

如果上述方法无效,直接卸载损坏或架构不匹配的Python 3.11,重新安装适配版本:

# 卸载Python 3.11
sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.11
sudo rm -f /usr/local/bin/python3.11
sudo rm -f /usr/local/bin/pip3.11

然后从Python官网下载对应Mac架构的Python 3.11安装包,完成安装后重新测试编译。

4. 检查Docker架构设置

Docker的Rosetta模拟设置可能影响系统架构环境:

  1. 打开Docker Desktop,进入Settings > Features in development
  2. 查看"use Rosetta for x86/amd64 emulation on Apple Silicon"选项的状态
  3. 如果近期修改过该设置,尝试重启Docker和电脑后再测试编译。

内容的提问来源于stack exchange,提问作者ChicoDaMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:53:18