ImportError: 无法从flask导入Markup,相关依赖环境下求解决方案
Flask 3.0.0 导入 flask_ckeditor 时出现 ImportError 问题
我的代码
from flask import Flask, render_template, redirect, url_for from flask_bootstrap import Bootstrap5 from flask_sqlalchemy import SQLAlchemy from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired, URL from flask_ckeditor import CKEditor, CKEditorField
报错信息
Traceback (most recent call last): File "/home/mustafa/Desktop/Backend/REST-API/some_project/main.py", line 7, in <module> from flask_ckeditor import CKEditor, CKEditorField File "/home/mustafa/Desktop/Backend/REST-API/some_project/venv/lib/python3.10/site-packages/flask_ckeditor/__init__.py", line 12, in <module> from flask import current_app, Markup, Blueprint, url_for, request, jsonify, render_template_string ImportError: cannot import name 'Markup' from 'flask' (/home/mustafa/Desktop/Backend/REST-API/some_project/venv/lib/python3.10/site-packages/flask/__init__.py)
依赖配置(requirements.txt)
Bootstrap_Flask==2.3.0 Flask==3.0.0 Flask_CKEditor==0.4.6 flask_sqlalchemy==3.1.1 Flask_WTF==1.2.1 WTForms==3.0.1
解决方案
问题根源是 Flask 3.0.0 移除了从flask直接导入Markup的方式,Markup现在移到了markupsafe库中,而你使用的 Flask-CKEditor 0.4.6 版本过旧,未适配该变化。
有两种可行解决方式:
方法一:升级 Flask-CKEditor 到兼容版本
执行命令更新至最新版:pip install --upgrade flask-ckeditor最新版 Flask-CKEditor 已适配 Flask 3.x 系列,更新后即可正常导入。
方法二:降级 Flask 到 2.x 版本
若不想升级 Flask-CKEditor,可将 Flask 降级到 2.x 稳定版,例如:pip install flask==2.3.3同时更新 requirements.txt 中的 Flask 版本号为
Flask==2.3.3。
不推荐直接修改 Flask-CKEditor 源码临时修复,会增加后续维护成本,优先选择上述两种官方兼容方案。
内容的提问来源于stack exchange,提问作者Mustafa Er
相关产品推荐
相关产品推荐

