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

Flask 1.1.2与2.2.2版本依赖冲突问题求助

解决Flask依赖兼容问题

错误原因分析

  1. Flask 2.2.2与flask_script冲突:flask_script是已停止维护的库(最后更新于2017年),它依赖Flask 1.x中的flask._compat模块,但Flask 2.x已移除该模块,导致ModuleNotFoundError。
  2. Flask 1.1.2与Jinja2版本冲突:Jinja2 3.0+移除了from jinja2 import escape的导入方式,而Flask 1.1.2仅兼容Jinja2<3.0,若环境中安装了高版本Jinja2则触发ImportError。

修复方案

方案一:升级到兼容Flask 2.x的依赖(推荐)

1. 更新requirements.txt

移除过时的flask_script,升级flask_migrate至支持Flask 2.x的版本:

PyMySQL==1.0.2
cryptography==37.0.4
Flask==2.2.2
flask_sqlalchemy==2.5.1
sqlalchemy<1.4.0
flask_migrate==3.1.0
sqlalchemy_utils==0.38.3

2. 调整manage.py代码

移除flask_script相关逻辑,改用Flask官方CLI:

from flask import Flask
from flask_migrate import Migrate
from configuration import Configuration
from models import database
from sqlalchemy_utils import database_exists, create_database

app = Flask(__name__)
app.config.from_object(Configuration)

migrate = Migrate(app, database)

if __name__ == '__main__':
    if not database_exists(Configuration.SQLALCHEMY_DATABASE_URI):
        create_database(Configuration.SQLALCHEMY_DATABASE_URI)

3. 执行数据库迁移命令

设置环境变量后使用Flask CLI:

  • Linux/macOS:
    export FLASK_APP=manage.py
    flask db init
    
  • Windows:
    set FLASK_APP=manage.py
    flask db init
    

方案二:回退到Flask 1.1.2并固定Jinja2版本(不推荐,存在安全隐患)

若必须使用旧版Flask,需在requirements.txt中添加Jinja2版本限制:

PyMySQL==1.0.2
cryptography==37.0.4
Flask==1.1.2
flask_sqlalchemy==2.5.1
sqlalchemy<1.4.0
flask_migrate==2.7.0
flask_script==2.0.6
sqlalchemy_utils==0.38.3
Jinja2<3.0

然后重新安装依赖:

pip install -r requirements.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:09:30