Flask-Login 与 Heroku 构建失败求助:Python依赖安装问题
解决Heroku构建时Python依赖(tar.gz安装)的问题
嘿,作为Python和Heroku新手碰到这种依赖安装问题太正常了,我帮你梳理几个实用的解决方向,先把你遇到的错误信息贴出来方便参考:
-----> Python app detected
-----> Installing pip
-----> Installing requirements with pip
Collecting Flask-Login (from -r /tmp/build_f4f549a18e5f1258bbac763cc70b38dd/requirements.txt (line 13))
Downloading Flask-Login-0.4.1.tar.gz
Complete output from command python setup.py egg_info:
/app/.hero...
接下来是具体的解决步骤:
- 优先使用PyPI标准依赖写法:如果你的
requirements.txt里直接写了Flask-Login-0.4.1.tar.gz,建议改成Flask-Login==0.4.1。Heroku的pip会优先拉取PyPI上的预编译wheel包,比手动指定tar.gz更稳定,还能避免tar包下载或解压时的各种意外问题。 - 如果必须用tar.gz包:
- 确保tar.gz的链接是公开可访问的;要是是自定义本地包,就把它放到项目目录里(比如新建一个
vendor文件夹),然后在requirements.txt里用相对路径引用,比如./vendor/Flask-Login-0.4.1.tar.gz,同时别把这个包加到.gitignore里,确保Heroku能拉到这个文件。
- 确保tar.gz的链接是公开可访问的;要是是自定义本地包,就把它放到项目目录里(比如新建一个
- 指定兼容的Python版本:在项目根目录新建
runtime.txt文件,写上你本地测试用的Python版本,比如python-3.9.16(要符合Heroku官方支持的版本列表),避免Heroku自动选择的Python版本和你本地不一致,导致setup.py执行失败。 - 本地先验证安装:在本地虚拟环境里运行
pip install -r requirements.txt,如果本地也报错,那问题大概率不在Heroku——要么是包本身依赖缺失(比如Flask-Login需要特定版本的Flask,得确保requirements.txt里也正确列了Flask),要么是tar包本身损坏了。 - 检查系统编译依赖:如果错误是
setup.py编译阶段出现的(比如缺gcc、libffi这类系统库),可以在项目根目录新建Aptfile,里面写上需要的系统包(比如gcc、libffi-dev),Heroku会先安装这些系统依赖,再处理Python包的安装。
内容的提问来源于stack exchange,提问作者Dileepa




