Heroku部署Flask封装Python ML模型时提示lapack/blas资源缺失报错
错误原因
部署过程中触发No lapack/blas resources found报错,是因为Heroku默认的Python运行环境缺少线性代数相关的系统依赖,导致numpy、scipy等数值计算库在源码编译环节失败。
解决步骤
- 优先调整依赖版本避免编译
打开你项目根目录的requirements.txt,将numpy、scipy的版本指定为提供预编译wheel的版本,不需要本地编译即可安装,适配Heroku Python 3.9环境的参考版本如下:
numpy==1.21.6 scipy==1.7.3
修改后重新推送代码尝试部署,90%以上的同类问题都可以通过这个方法解决。
- 安装系统依赖适配高版本库
如果你需要使用更高版本的数值计算库,无法降级到上述版本,可以通过添加系统依赖的方式解决:
- 在项目根目录新建名为
Aptfile的文件,写入以下内容:
libblas-dev liblapack-dev gfortran
- 进入Heroku应用的设置页面,找到Buildpacks配置区域,添加官方apt buildpack,且将该buildpack的排序调整到官方Python buildpack之前
- 重新推送代码部署即可。
额外优化建议
- 清理
requirements.txt中的冗余依赖,移除本地开发用的jupyter、调试工具等部署不需要的包,减少依赖冲突概率 - 检查
Procfile拼写是否正确,Flask应用的参考启动配置为web: gunicorn 你的启动文件名:app,替换为你实际的启动文件名称即可。
内容的提问来源于stack exchange,提问作者spectre
相关产品推荐
相关产品推荐

