Flask-admin运行WYSIWYG示例报错:ImportError: No module named ext.sqlalchemy
Flask-Admin WYSIWYG示例运行报错:ImportError: No module named ext.sqlalchemy 解决方法
这个问题我之前折腾Flask-Admin示例时也碰到过,本质原因是Flask-SQLAlchemy(以及Flask-Admin)的导入语法在新版本中已经更新,但示例代码还在使用被弃用的旧语法,导致找不到模块。
问题根源
你安装的是新版本的Flask-SQLAlchemy,而示例代码里用的是旧版的导入方式:from flask.ext.sqlalchemy import SQLAlchemy——这种flask.ext.*的导入格式在Flask 1.0+之后就被官方弃用了,新版本统一使用flask_*的包名直接导入。
两种解决方案
方案一:修改代码适配新版本(推荐)
直接更新examples/wysiwyg/app.py里的导入语句,替换成当前主流的写法:
打开app.py,找到这些导入行:
from flask.ext.sqlalchemy import SQLAlchemy from flask.ext import admin from flask.ext.admin.contrib import sqla
替换为:
from flask_sqlalchemy import SQLAlchemy from flask_admin import Admin from flask_admin.contrib.sqla import ModelView
另外注意代码里的admin = admin.Admin(app, name="Example: WYSIWYG")也要改成admin = Admin(app, name="Example: WYSIWYG")(避免变量名和模块名冲突)。
保存修改后,重新运行:
python examples/wysiwyg/app.py
这样就能正常启动应用了,而且用的是最新版本的依赖,安全性和稳定性更好。
方案二:安装兼容旧语法的旧版本依赖
如果你不想修改代码,可以指定安装支持旧flask.ext.*导入方式的依赖版本:
- 编辑
examples/wysiwyg/requirements.txt,修改为:
Flask Flask-Admin==1.5.6 Flask-SQLAlchemy==2.4.4
- 重新安装依赖:
pip install -r examples/wysiwyg/requirements.txt
- 再次运行应用即可。
额外提醒
推荐优先选择方案一,因为旧版本的库可能存在未修复的bug和安全漏洞,新版本会持续维护更新。
内容的提问来源于stack exchange,提问作者Houy Narun
相关产品推荐
相关产品推荐

