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

从flask_sqlalchemy导入SQLAlchemy报错AttributeError求助

Flask-SQLAlchemy导入错误:AttributeError: module 'sqlalchemy.orm' has no attribute 'DeclarativeMeta'

我在MacBook的VSCode上正常运行的Flask项目,想移植到树莓派长期运行。安装了和Mac上相同版本的依赖包,但执行from flask_sqlalchemy import SQLAlchemy时出现如下错误:

Python 3.7.16 (default, Jan 12 2023, 13:19:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from flask_sqlalchemy import SQLAlchemy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/stocktracker101/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 5, in <module>
    from .extension import SQLAlchemy
  File "/home/pi/stocktracker101/lib/python3.7/site-packages/flask_sqlalchemy/extension.py", line 17, in <module>
    from .model import _QueryProperty
  File "/home/pi/stocktracker101/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'

以下是虚拟环境中已安装的包列表:

Package             Version
------------------- -----------
appdirs             1.4.4
beautifulsoup4      4.11.1
bs4                 0.0.1
certifi             2022.12.7
charset-normalizer  2.1.1
click               8.1.3
cssselect           1.2.0
fake-useragent      1.1.1
feedparser          6.0.10
Flask               2.2.2
Flask-SQLAlchemy    3.0.2
gunicorn            20.1.0
idna                3.4
importlib-metadata  4.13.0
importlib-resources 5.10.2
itsdangerous        2.1.2
Jinja2              3.1.2
lxml                4.9.2
MarkupSafe          2.1.1
numpy               1.21.6
pandas              1.3.5
parse               1.19.0
pip                 22.3.1
psycopg2            2.8.4
psycopg2-binary     2.8.4
pyee                8.2.2
pyppeteer           1.0.2
pyquery             2.0.0
python-dateutil     2.8.2
pytz                2022.7
requests            2.28.1
requests-html       0.10.0
setuptools          47.1.0
sgmllib3k           1.0.0
six                 1.16.0
soupsieve           2.3.2.post1
SQLAlchemy          1.3.15
tqdm                4.64.1
typing_extensions   4.4.0
urllib3             1.26.14
w3lib               2.1.1
websockets          10.4
Werkzeug            2.2.2
yahoo-fin           0.8.9.1
zipp                3.11.0

问题原因及解决方法

问题核心是版本不兼容:Flask-SQLAlchemy 3.0.2 要求 SQLAlchemy 版本至少为1.4.0,但你当前安装的是1.3.15,版本过低,导致找不到新版本才引入的DeclarativeMeta属性。

方案一:升级SQLAlchemy

  1. 激活虚拟环境:
source /home/pi/stocktracker101/bin/activate
  1. 升级到兼容版本:
pip install SQLAlchemy>=1.4.0
  1. 验证导入是否成功:
python -c "from flask_sqlalchemy import SQLAlchemy; print('导入成功')"

注意:如果项目代码基于SQLAlchemy 1.3.x语法编写,升级后可能需要调整部分代码(比如模型声明、查询API的变化)。

方案二:降级Flask-SQLAlchemy

如果不想修改项目代码,可以降级Flask-SQLAlchemy到兼容1.3.x的版本(比如2.5.1):

pip install Flask-SQLAlchemy==2.5.1

内容的提问来源于stack exchange,提问作者Rob F

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:00:16