在虚拟环境中使用pip安装apache-superset后,我运行:
superset upgrade db
我遇到了以下错误:
ImportError: cannot import name '_ColumnEntity' from 'sqlalchemy.orm.query' (/Users/ahmedawny/supersetenv/lib/python3.7/site-packages/sqlalchemy/orm/query.py)
任何建议将不胜感激。
答案 0 :(得分:39)
这个的核心原因是 sqlalchemy 1.4 已经发布,所以现在它是 pip 安装的默认值。界面改动较多,新增查询界面。
所以升级到 1.4 会破坏依赖于 sqlalchemy 1.3 API 内部的东西。在您的 requirements.txt 文件中——将项目版本固定到 1.3.x 系列,直到您的其他内容赶上。例如,截至目前,sqlalchemy-utils 仍依赖于 sqlalchemy 1.3x。
requirements.txt:
sqlalchemy < 1.4.0
然后使用:
pip -r requirements.txt
“降级”到固定版本。
答案 1 :(得分:2)
转到 sqlalchemy_utils.functions 文件并更改:
因此,我相信它应该改变代码中的一些东西......
答案 2 :(得分:0)
@InsertSpywareTrackingHere 答案是正确的,只是想补充一点,为 Flask-AppBuilder 制作了一个新版本,该版本将 SQLAlchemy 固定在 1.4.0 以下。所以现在应该可以使用 apache-superset
安装 pip install apache-superset
。
答案 3 :(得分:0)
您可以通过更改 sqlalchemy_utils\functions\orm.py 中的导入来临时修复此问题:
from sqlalchemy.orm.query import _ColumnEntity
到
from sqlalchemy.orm.context import _ColumnEntity