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

使用PyInstaller打包含OpenCV的Python程序为exe时出现cv2递归错误

问题原因

该报错是OpenCV 4.6及以上版本与PyInstaller模块导入机制存在兼容性冲突导致的:新版cv2的__init__.py引导加载逻辑和PyInstaller的导入钩子触发了循环递归,无法正常加载cv2二进制扩展。

解决方案

按优先级选择以下方案即可:

  • 方案1:降级OpenCV版本(最简便,兼容性最稳定)
    卸载当前版本后安装4.5.5.62版本,命令如下:

    pip uninstall opencv-python -y
    pip install opencv-python==4.5.5.62
    

    安装完成后重新执行打包命令即可。

  • 方案2:打包时添加cv2相关参数(无需降级版本)
    执行打包命令时额外添加隐藏导入和资源收集参数:

    pyinstaller --onefile --hidden-import=cv2 --collect-binaries=opencv-python Myproject.py
    
  • 方案3:修改spec配置文件打包(适用于前两个方案无效的场景)

    1. 先生成项目的spec配置文件:
    pyi-makespec Myproject.py
    
    1. 打开生成的Myproject.spec文件,修改两个配置项:
      • 在hiddenimports列表中添加'cv2'
      • 在datas列表中添加cv2库的路径映射,示例如下(替换为你本地实际的cv2安装路径):
        datas = [ (r'C:\Users\你的用户名\AppData\Local\Programs\Python\Python39\Lib\site-packages\cv2', 'cv2') ]
        
    2. 基于修改后的spec文件执行打包:
    pyinstaller Myproject.spec
    
额外注意事项
  • 打包完成后,代码中用到的search.png需要和生成的exe文件放在同一目录,否则运行时会触发找不到图片的报错。
  • 推荐在干净的虚拟环境中执行打包操作,避免多余的第三方依赖冲突导致打包异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:24:03