Heroku部署Python应用失败 numpy/pandas wheel构建报错求助
故障根因
构建失败的核心原因是依赖版本和Heroku默认运行时的Python版本不匹配:
- Heroku当前默认部署使用的Python版本为3.10及以上,你在
requirements.txt中指定的numpy<=1.19.2最高仅支持Python 3.9,官方没有提供适配高版本Python的预编译wheel包 - 部署时pip会尝试从源码编译numpy,而Heroku的构建环境没有预装编译该旧版本numpy所需的匹配版本C/Fortran编译工具链,直接触发编译错误
- 后续pandas、scikit-learn的构建都依赖numpy,numpy构建失败后这两个包也会连带报错退出。
修复方案
二选一即可,优先推荐第一种:
- 方案1:升级依赖版本适配高版本Python
修改requirements.txt内的数值计算相关依赖为兼容Python3.10+的版本,参考配置如下:
修改后重新推送部署即可。gspread<=5.4.0 numpy>=1.22.0 oauth2client<=4.1.3 pandas>=1.4.2 scikit_learn>=1.0.2 streamlit==1.10.0 - 方案2:锁定Python版本兼容旧依赖
如果你的业务代码强依赖旧版numpy、pandas、scikit-learn的接口,无法升级依赖,可以在项目根目录新建runtime.txt文件,强制Heroku使用兼容旧依赖的Python版本,文件内容填写:
Python 3.9.13是你当前列表里所有旧版本依赖都官方支持的最高Python版本,对应依赖都有预编译wheel,不需要源码编译,不会触发当前的构建错误。python-3.9.13 - 可选清理操作:如果修改配置后仍然出现同类报错,先执行命令清空Heroku构建缓存再重新部署:
heroku builds:cache:purge -a 替换为你自己的Heroku应用名称
内容的提问来源于stack exchange,提问作者afrologicinsect
相关产品推荐
相关产品推荐

