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

PyInstaller打包含MediaPipe的Python程序时出现protobuf导入错误求助

解决MediaPipe + PyInstaller/Auto-py-to-exe打包exe时的protobuf导入错误

核心问题原因

PyInstaller默认未正确收集protobuf的内部builder模块,导致exe运行时触发ImportError——无需降级protobuf(降级反而会引发MediaPipe的依赖冲突),问题根源在打包工具的依赖收集逻辑。


解决方案1:修改PyInstaller Spec文件(推荐)

如果用Auto-py-to-exe操作:

  • 打开「Advanced」选项卡,勾选「Generate Spec File」生成对应的.spec文件
  • 用文本编辑器打开该文件,找到hiddenimports列表,补充缺失的protobuf模块:
    hiddenimports=['google.protobuf.internal.builder', 'google.protobuf.internal'],
    
  • 回到Auto-py-to-exe,点击「Load Spec File」加载修改后的文件重新打包;或直接用命令行编译:
    pyinstaller your_script.spec
    

解决方案2:强制收集完整依赖包

不想修改spec文件的话,给PyInstaller添加--collect-all参数强制收集整个包的文件:

  • 命令行方式:
    pyinstaller --collect-all mediapipe --collect-all google.protobuf your_script.py
    
  • Auto-py-to-exe方式:在「Advanced」选项卡的「Additional Arguments」中填入:
    --collect-all mediapipe --collect-all google.protobuf
    

解决方案3:更换打包工具(Nuitka)

如果PyInstaller始终无法解决,试试Nuitka(将Python代码编译为C后生成exe,依赖处理更彻底):

  1. 安装Nuitka:
    pip install nuitka
    
  2. 打包命令(Windows需先安装Visual Studio Build Tools):
    python -m nuitka --standalone --onefile --enable-plugin=mediapipe your_script.py
    

额外注意事项

  • 始终使用虚拟环境打包,避免全局环境的依赖干扰
  • 保持MediaPipe和protobuf版本匹配(如mediapipe 0.10.14必须搭配protobuf >=4.25.3 <5,不要随意降级)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:42:44