使用PyInstaller打包时出现ModuleNotFoundError: No module named 'cv2'求助
解决PyInstaller打包时ModuleNotFoundError: No module named 'cv2'的问题
你的问题出在PyInstaller未追踪到torch.hub动态加载的yolov5模块中对cv2的导入,常规--hidden-import参数无法覆盖这种动态依赖场景,可按以下方法解决:
方法1:通过.spec文件配置隐藏导入
- 先生成打包配置文件:
pyi-makespec main.py - 打开生成的
main.spec,找到hiddenimports列表,添加cv2相关依赖:hiddenimports=['cv2', 'opencv-python'], - 用配置文件重新打包:
pyinstaller main.spec
方法2:强制收集opencv所有文件
使用--collect-all参数强制打包opencv-python的全部文件,覆盖动态导入的场景:
pyinstaller --collect-all opencv-python main.py
方法3:替换torch.hub动态加载为本地静态导入
将yolov5代码直接集成到项目中,避免动态加载导致的依赖遗漏:
- 克隆yolov5仓库到项目目录:
git clone https://github.com/ultralytics/yolov5.git - 修改代码中模型加载的逻辑,替换
torch.hub.load为本地导入:# 替换原torch.hub.load代码 from yolov5.models.common import AutoShape, DetectMultiBackend from yolov5.utils.general import check_img_size # 初始化模型 self.model = DetectMultiBackend('models/captcha.pt', device=device) self.model = AutoShape(self.model) - 重新执行打包命令,此时PyInstaller可正常追踪到cv2的静态导入。
方法4:验证环境依赖
确保打包使用的Python环境已正确安装opencv-python:
- 查看已安装包:
# Windows pip list | findstr opencv-python # Linux/macOS pip list | grep opencv-python - 未安装则执行:
pip install opencv-python
内容的提问来源于stack exchange,提问作者pablo
相关产品推荐
相关产品推荐

