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

导入flask-mongoengine时遇JSONEncoder导入错误,求冲突解决方法

解决Flask 2.3.2与flask-mongoengine 1.0.0的JSONEncoder导入冲突

你的初始化代码:

from flask import Flask
from config import Config
from flask_mongoengine import MongoEngine

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

db = MongoEngine()
db.init_app(app)

from application import routes

执行导入时触发错误:

ImportError: cannot import name 'JSONEncoder' from 'flask.json' 

问题根源是Flask 2.3.x重构了JSON模块,将JSONEncoder从flask.json迁移到了flask.json.provider,而你使用的flask-mongoengine 1.0.0版本未适配该变更,导致导入失败。以下是三种解决方法:

方法1:升级flask-mongoengine到兼容版本

这是最推荐的长期解决方案,flask-mongoengine 2.0.0及以上版本已适配Flask 2.x的新结构。执行升级命令:

pip install --upgrade flask-mongoengine>=2.0.0

方法2:降级Flask到兼容版本

如果暂时无法升级flask-mongoengine,可以将Flask降级到2.2.x系列(该版本仍保留flask.json.JSONEncoder):

pip install Flask==2.2.5

降级后需确认其他依赖(如Flask-WTF)是否兼容当前Flask版本。

方法3:临时补丁(仅用于测试/紧急场景)

不推荐用于生产环境,但可临时绕过导入问题。在导入flask-mongoengine之前,手动映射JSONEncoder:

# 先添加补丁代码
from flask.json.provider import JSONEncoder
import flask.json
flask.json.JSONEncoder = JSONEncoder

# 再执行原导入逻辑
from flask import Flask
from config import Config
from flask_mongoengine import MongoEngine

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

db = MongoEngine()
db.init_app(app)

from application import routes

内容的提问来源于stack exchange,提问作者Andrei Niță

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:54:53