部署Flask应用至Heroku遇ModuleNotFoundError问题求助
解决Heroku部署Python应用时的
pip.req模块缺失及bad-requirements错误 嘿,我之前部署Python应用到Heroku时也踩过这个坑!这俩错误其实是关联的,根源在于旧的Heroku buildpack和新版pip不兼容,再加上可能requirements.txt文件有问题,给你一步步说怎么解决:
1. 切换到官方Python Buildpack
你遇到的ModuleNotFoundError: No module named 'pip.req',是因为Heroku旧的第三方buildpack里的pip-diff脚本还在依赖pip.req这个模块——但这个模块在pip 10及以上版本里已经被移除了。官方的Python buildpack早就修复了这个兼容问题,所以先切换过去:
heroku buildpacks:set heroku/python
2. 修复requirements.txt文件
日志里的mount: failure.bad-requirements: No such file or directory说明Heroku找不到有效的依赖文件,或者文件格式有问题:
- 先在本地项目根目录生成正确的
requirements.txt:pip freeze > requirements.txt - 检查文件里有没有无效的包名、重复项或者语法错误,比如多余的符号、乱码内容(少量空行不影响)。
- 确保这个文件已经加入Git仓库,执行提交:
git add requirements.txt git commit -m "Fix requirements.txt for Heroku deployment"
3. 清除Heroku缓存并重新部署
有时候缓存里会残留旧的依赖或buildpack文件,导致问题重复出现,先清除缓存:
heroku repo:purge_cache
然后重新推送到Heroku:
git push heroku main
做完这几步,你的应用应该就能正常部署了!如果还有问题,可以检查一下本地pip版本是否和Heroku环境的版本匹配,或者有没有其他自定义buildpack存在冲突。
内容的提问来源于stack exchange,提问作者user9655597
相关产品推荐
相关产品推荐

