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

Heroku部署深度学习Flask应用成功但OpenCV报错导致应用错误求助

Heroku部署Flask深度学习应用问题修复方案

1. 修复libGL.so.1依赖缺失导致的cv2导入报错

报错核心原因是标准版本的opencv-python包含GUI相关组件,依赖系统的libGL图形库,而Heroku默认运行环境未预装该依赖。优先选择以下无侵入方案:

  • 替换依赖包:将requirements.txt中的opencv-python替换为opencv-python-headless,该版本为服务器环境定制,剔除了所有GUI相关依赖,不会触发libGL缺失报错,同时可减少数十MB的依赖体积。
  • 若必须使用标准版本opencv,可在项目根目录新增名为Aptfile的文件,写入以下内容:
libgl1-mesa-glx
libglib2.0-0

再运行命令heroku buildpacks:add --index 1 heroku-community/apt添加apt构建包,部署时会自动安装所需系统依赖。

2. 修复slug超出300MB软限制问题

深度学习依赖、模型文件是slug体积超标的核心原因,可通过以下方式逐层压缩:

  • 精简依赖包:优先使用CPU版的深度学习框架,去掉CUDA相关冗余组件,可减少至少200MB的体积;移除requirements.txt中部署不需要的依赖,例如jupyter、matplotlib、本地调试工具等。
  • 忽略冗余文件:在项目根目录新增.slugignore文件,将不需要部署的文件/目录加入列表,示例配置:
*.pyc
__pycache__
dataset/
train_logs/
test_images/
local_venv/
.git/
  • 轻量化模型:将打包在项目内的模型文件转为量化、剪枝后的精简版本,可缩小50%以上的体积;也可将模型存储到第三方对象存储服务,应用启动时动态拉取,不将模型打入slug包。

验证流程

  1. 本地测试修改依赖后的代码可正常运行,无导入报错
  2. 提交所有修改后的配置文件到代码仓库
  3. 重新触发Heroku部署,确认构建日志slug体积降至300MB以内,运行日志无进程崩溃报错即可正常访问应用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:54:07