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

Heroku部署Flask应用报错:无法从flask_session导入Session

Flask部署Heroku的依赖问题解决指南

问题回顾

将本地运行正常的Flask网站部署到Heroku时,先遇到ImportError: cannot import name 'Session' from 'flask_session'错误,应用启动失败并触发H10崩溃错误,日志详情:

2023-07-24T02:31:34.494523+00:00 app[web.1]: ImportError: cannot import name 'Session' from 'flask_session' (unknown location)
2023-07-24T02:31:34.494654+00:00 app[web.1]: [2023-07-24 02:31:34 +0000] [8] [INFO] Worker exiting (pid: 8)
2023-07-24T02:31:34.526827+00:00 app[web.1]: [2023-07-24 02:31:34 +0000] [2] [ERROR] Worker (pid:7) exited with code 3
2023-07-24T02:31:34.528740+00:00 app[web.1]: [2023-07-24 02:31:34 +0000] [2] [ERROR] Worker (pid:8) was sent SIGTERM!
2023-07-24T02:31:34.627270+00:00 app[web.1]: [2023-07-24 02:31:34 +0000] [2] [ERROR] Shutting down: Master
2023-07-24T02:31:34.627284+00:00 app[web.1]: [2023-07-24 02:31:34 +0000] [2] [ERROR] Reason: Worker failed to boot.
2023-07-24T02:31:35.098046+00:00 heroku[web.1]: Process exited with status 3
2023-07-24T02:31:35.130639+00:00 heroku[web.1]: State changed from starting to crashed
2023-07-24T02:31:48.794602+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=flasker888-950c07d40a01.herokuapp.com request_id=7d5cb524-3382-4408-b53d-992e3382cb82 fwd="114.181.123.229" dyno= connect= service= status=503 bytes= protocol=https
2023-07-24T02:31:48.979619+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=flasker888-950c07d40a01.herokuapp.com request_id=a74969fb-4dbf-44e0-be3d-a21dd1c2d064 fwd="114.181.123.229" dyno= connect= service= status=503 bytes= protocol=https

通过pip freeze生成完整的requirements.txt解决了flask_session的问题,但现在Heroku无法识别flask-bcrypt。当前requirements.txt内容:

blinker==1.6.2
cachelib==0.10.2
click==8.1.3
colorama==0.4.6
Flask==2.3.2
Flask-Login==0.6.2
Flask-Session==0.5.0
Flask-SQLAlchemy==3.0.5
greenlet==2.0.2
gunicorn==21.1.0
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
numpy==1.25.1
packaging==23.1
pandas==2.0.3
psycopg2==2.9.6
python-dateutil==2.8.2
pytz==2023.3
six==1.16.0
SQLAlchemy==2.0.17
typing_extensions==4.7.1
tzdata==2023.3
Werkzeug==2.3.6

解决步骤

  • 确保本地虚拟环境已安装flask-bcrypt:激活虚拟环境后,执行pip install flask-bcrypt。如果本地没安装这个包,pip freeze不会把它加入requirements.txt,这是Heroku识别不了的核心原因。
  • 重新生成requirements.txt:执行pip freeze > requirements.txt,此时检查文件内容,应该会出现Flask-Bcrypt==x.x.x的条目(x.x.x为实际安装的版本)。
  • 提交更新到Heroku:依次执行以下命令
    git add requirements.txt
    git commit -m "添加flask-bcrypt依赖"
    git push heroku main
    
  • 若仍有问题,检查版本兼容性:当前使用的Flask版本是2.3.2,可指定兼容的flask-bcrypt版本,比如在requirements.txt中手动添加Flask-Bcrypt==1.0.1(该版本适配Flask 2.x系列),再重新提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:25:35