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

Flask 3.0.0搭配Flask-Babel 2.0.0出现locked_cached_property导入错误求助

解决Flask 3.0.0 + Flask-Babel 2.0.0的ImportError: locked_cached_property问题

问题原因

Flask 3.0.0彻底移除了flask.helpers中的locked_cached_property API,但你使用的Flask-Babel 2.0.0仍在尝试导入这个已被删除的对象,直接导致了导入错误。由于项目要求必须用Flask-Babel<3,不能升级到适配Flask3.0的Flask-Babel 3.x,可通过以下两种方案解决:


方案1:升级Flask-Babel到兼容Flask3.0的2.x版本

Flask-Babel在2.0.1及后续的2.x版本中已经修复了对Flask3.0的适配问题,替换了对locked_cached_property的依赖。执行以下命令更新:

pip install "Flask-Babel>=2.0.1,<3"

方案2:降级Flask到保留该API的版本

如果不想升级Flask-Babel,可以将Flask降级到2.3.x系列(该版本仍保留locked_cached_property),同时配套降级Werkzeug到对应版本:

pip install "Flask~=2.3.0" "Werkzeug~=2.3.0"

额外修正:代码中的配置导入问题

你的app.py里从flask导入的Config是Flask自带的默认配置类,会覆盖你自己在config.py中定义的配置。需要修改导入语句:

# 把from flask import Config, Flask, render_template
# 改成
from flask import Flask, render_template
from config import Config

修正后的完整app.py:

# app.py
#!/usr/bin/env python3
"""Basic Flask app"""
from flask import Flask, render_template
from flask_babel import Babel
from config import Config

app = Flask(__name__)
babel = Babel(app)
app.config.from_object(Config)


@app.route("/")
def home():
    """Home page route"""
    return render_template("1-index.html")


if __name__ == "__main__":
    app.run(debug=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:03:16