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

3aw*_*wny 16 python sqlalchemy pip python-3.x apache-superset

在虚拟环境中使用 pip 安装 apache-superset 后,我​​运行:

superset upgrade db   
Run Code Online (Sandbox Code Playgroud)

我遇到以下错误:

ImportError: cannot import name '_ColumnEntity' from 'sqlalchemy.orm.query' (/Users/ahmedawny/supersetenv/lib/python3.7/site-packages/sqlalchemy/orm/query.py)
Run Code Online (Sandbox Code Playgroud)

任何意见,将不胜感激。

Ins*_*ere 40

这样做的核心原因是 sqlalchemy 1.4 已发布,因此它现在是 pip 安装的默认值。有许多界面更改并添加了新的查询界面。

所以升级到 1.4 会破坏依赖于 sqlalchemy 1.3 API 内部的东西。在您的 requirements.txt 文件中——将项目版本固定到 1.3.x 系列,直到您的其他内容赶上。例如,截至目前,sqlalchemy-utils 仍依赖于 sqlalchemy 1.3x。

要求.txt:

sqlalchemy < 1.4.0
Run Code Online (Sandbox Code Playgroud)

然后使用:

pip -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

“降级”到固定版本。

  • pip install -r ... (3认同)
  • 谁负责从 1.3.x 到 1.4.0 的重大更改?(叹) (3认同)

小智 5

如果您不想修改需求文件,按照@InsertSpywareTrackingHere 的答案中的建议,您可以手动 pip 安装旧版本:

pip install sqlalchemy==1.3.24
Run Code Online (Sandbox Code Playgroud)