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

PyInstaller打包onefile exe遇cv2递归导入及easyocr文件缺失问题

PyInstaller打包onefile exe解决easyocr相关错误方案

解决cv2递归导入+主环境包干扰问题

  • 彻底隔离虚拟环境依赖

    1. 激活venv后,卸载所有相关依赖:
      pip uninstall -y numpy opencv-python easyocr
      
    2. 安装兼容性验证过的版本组合:
      pip install numpy==1.19.5 opencv-python==4.5.5.62 easyocr==1.4.2
      
    3. 确认当前使用的是venv内的Python:执行where python,输出需指向venv\Scripts\python.exe,而非系统主环境路径
  • 修改spec文件强制依赖隔离与cv2导入
    在spec的Analysis段添加以下配置:

    a = Analysis(
        ['prog.py'],
        pathex=[],
        binaries=[],
        datas=[],
        hiddenimports=['cv2'],
        excludes=['numpy', 'opencv-python'],  # 排除主环境包干扰
        hookspath=None,  # 禁用系统级PyInstaller钩子
        win_no_prefer_redirects=False,
        win_private_assemblies=False,
        cipher=None,
        noarchive=False,
    )
    

解决easyocr字符文件缺失问题

  • 手动添加资源文件到打包目录
    在spec的datas参数中添加easyocr的character目录映射,替换为你本地venv的实际路径:

    datas=[('venv/Lib/site-packages/easyocr/character', 'easyocr/character')],
    

    若不确定路径,执行pip show easyocr查看Location字段,拼接/character即可得到源路径

  • 修复“File exists but should not”错误
    打包前先清理旧构建文件,再执行打包命令:

    rmdir /s /q build dist
    pyinstaller prog.spec --noconfirm
    

验证步骤

  1. 打包完成后,先在当前激活的venv环境下运行生成的exe,确认功能正常
  2. 若仍存在主环境依赖干扰,打包时追加参数强制指定依赖路径:
    pyinstaller prog.spec --paths venv/Lib/site-packages --noconfirm
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:06:22