从零安装Superset执行fab create-admin命令时报TypedDict导入错误
Superset执行创建管理员命令报TypedDict导入错误解决方法
故障场景
执行创建管理员账号命令时触发导入错误,安装流程中断:
- 执行命令:
sudo superset fab create-admin - 抛出错误:
ImportError: cannot import name 'TypedDict' from 'typing' (/usr/lib/python3.7/typing.py)
- 运行环境:Python 3.7
故障根因
TypedDict从Python 3.8版本才正式纳入标准库typing模块,Python 3.7环境自带的typing.py中不存在该对象。当前安装的Superset或其依赖的Flask-AppBuilder组件版本已经不再适配Python 3.7运行环境,执行命令时触发导入失败。
解决方法
方案1(推荐,无后续兼容隐患)
当前Superset 2.0及以上版本官方最低要求Python 3.8,新版本普遍要求Python 3.9+,升级Python版本是最彻底的解决方式:
- 先清理当前Python3.7环境下安装的Superset相关包,避免版本冲突:
pip uninstall -y apache-superset flask-appbuilder
- 安装Python 3.9或3.10版本(和现有Superset生态插件兼容性最好),创建独立虚拟环境并激活后,重新执行Superset全量安装流程。
- 安装完成后重新执行创建管理员命令:
superset fab create-admin
方案2(临时兼容,仅适合无法升级Python的场景)
如果暂时无法升级Python版本,可通过安装兼容补丁、固定依赖版本的方式临时修复:
- 安装typing向后兼容包,补齐Python3.7标准库缺失的对象:
pip install typing_extensions
- 固定Superset和相关依赖到最后支持Python3.7的版本区间:
pip install "apache-superset==2.0.1" "flask-appbuilder==3.4.5" "typing-extensions>=4.1.0"
- 执行导入校验,无报错后再执行创建管理员操作:
python -c "from typing_extensions import TypedDict; print('导入校验通过')"
注意事项
- 禁止直接用
sudo在系统全局Python环境安装Superset,该操作极易和系统自带Python的依赖产生版本冲突,所有安装操作尽量在独立虚拟环境中执行,避免污染系统环境。 - 如果操作后仍报相同错误,执行
which superset和which python核对路径,确认调用的superset命令属于你安装了对应依赖的Python环境,不要混用系统自带的旧Python解释器。
内容的提问来源于stack exchange,提问作者Марина Альховская
相关产品推荐
相关产品推荐

