AttributeError: 模块 'sqlalchemy.orm' 没有属性 'DeclarativeMeta'



运行flask应用程序时出现以下错误:

ubuntu@ip-10-50-50-190:~/RHS_US/application$ python3 run.py                                                                                                                                                 
Traceback (most recent call last):
File "run.py", line 1, in <module>
from portal import create_app
File "/home/ubuntu/RHS_US/application/portal/__init__.py", line 7, in <module>
from flask_sqlalchemy import SQLAlchemy
File "/home/ubuntu/RHS_US/application/rhs_us_venv/lib/python3.7/site- 
packages/flask_sqlalchemy/__init__.py", line 5, in <module>
from .extension import SQLAlchemy
File "/home/ubuntu/RHS_US/application/rhs_us_venv/lib/python3.7/site- 
packages/flask_sqlalchemy/extension.py", line 17, in <module>
from .model import _QueryProperty
File "/home/ubuntu/RHS_US/application/rhs_us_venv/lib/python3.7/site- 
packages/flask_sqlalchemy/model.py", line 210, in <module>
class DefaultMeta(BindMetaMixin, NameMetaMixin, sa.orm.DeclarativeMeta):
AttributeError: module 'sqlalchemy.orm' has no attribute 'DeclarativeMeta'

我也检查了site packages下的model.py,它确实包含

类DefaultMeta(BindMetaMixin, NameMetaMixin,sa.orm.DeclarativeMeta):

执行pip freeze查看软件包版本。也许您有不兼容的sqlalchemy和flask-sqlalchemy包。我最近偶尔从1.23更新了我的sqlalchemy包。X到1.4。X和其中一个项目,依赖于1.23。X无法正常工作,直到我注意到它并降低了sqlalchemy。但是因为这个,我得到了同样的例外。我尝试安装旧版本的flask-sqlalchemy:

pip install Flask-SQLAlchemy==2.4.4

但是它抛出了下一个异常:

'_FakeStack'对象没有属性'ident_func'

所以我尝试安装2.5.0:

pip install Flask-SQLAlchemy==2.5.0

在此之后,我的flask项目开始没有问题。然后我返回2.5.1,它也开始没有问题。

所以在我的情况下,问题的原因是降级的sqlalchemy包,这是在重新安装Flask-SQLAlchemy包后消失的

但我目前在python 3.11 windows。在您的情况下,问题的原因可能有所不同。

最新更新