当我尝试使用 Flask 扩展时,我的应用程序在from flask.ext.sqlalchemy import SQLAlchemy
或from flask.exthook import ExtDeprecationWarning
等行上引发ModuleNotFound
错误。我安装了烧瓶和扩展程序。为什么我会收到此错误?
您的代码或您正在使用的代码中的某些内容正在尝试导入flask.ext
或flask.exthook
,这在 Flask 1.0 中不再存在。它们在被明显弃用至少一年后被完全删除,并在此之前隐式弃用了很多年。任何仍然依赖于它的东西都必须升级。
任何对from flask.ext import ...
的使用都应替换为直接导入扩展。例如,flask.ext.sqlalchemy
变得flask_sqlalchemy
.
导入from flask.exthook import ExtDeprecationWarning
的唯一原因是将以前的弃用警告静音。由于它不再存在,因此没有静音警告,并且可以删除该代码。
我在/bin/superset
遇到了这个问题,它只是为了警告,所以我像这样静音:
#from flask.exthook import ExtDeprecationWarning
from superset.cli import create_app
#warnings.simplefilter('ignore', ExtDeprecationWarning)
此外,安装 sqlalchemy==1.2.18 有助于解决随后的错误(这一行可能不相关,所以仅供参考(!
这可能会帮助那些遇到这个线程的人,因为他们有一个No module named 'flask.ext' error
。
从一开始,我就设置了from flask_sqlalchemy import SQLAlchemy
,所以我不明白问题是什么。 最终奏效的是用pip3 install --upgrade Flask-SQLAlchemy
升级 sql 炼金术。