导入错误:无法从“sqlalchemy.orm.query”导入名称“_ColumnEntity”

时间:2021-03-15 20:08:49

标签: python python-3.x sqlalchemy pip apache-superset

在虚拟环境中使用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)

任何建议将不胜感激。

4 个答案:

答案 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 文件并更改:

  • from sqlalchemy.orm.query import _ColumnEntity(评论这个,或者删除它)
  • 从 sqlalchemy.orm.context 导入 _ColumnEntity(包含)

因此,我相信它应该改变代码中的一些东西......

答案 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