PyInstaller打包onefile exe遇cv2递归导入及easyocr文件缺失问题
PyInstaller打包onefile exe解决easyocr相关错误方案
解决cv2递归导入+主环境包干扰问题
彻底隔离虚拟环境依赖
- 激活venv后,卸载所有相关依赖:
pip uninstall -y numpy opencv-python easyocr - 安装兼容性验证过的版本组合:
pip install numpy==1.19.5 opencv-python==4.5.5.62 easyocr==1.4.2 - 确认当前使用的是venv内的Python:执行
where python,输出需指向venv\Scripts\python.exe,而非系统主环境路径
- 激活venv后,卸载所有相关依赖:
修改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
验证步骤
- 打包完成后,先在当前激活的venv环境下运行生成的exe,确认功能正常
- 若仍存在主环境依赖干扰,打包时追加参数强制指定依赖路径:
pyinstaller prog.spec --paths venv/Lib/site-packages --noconfirm
内容的提问来源于stack exchange,提问作者mrblue6
相关产品推荐
相关产品推荐

