You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 18.04安装Apache Superset遇ImportError:无法导入url_encode

我太懂你折腾两周的崩溃感了——Superset的依赖版本兼容问题真的很磨人,尤其是在Python3.6这种稍旧的环境下。你遇到的ImportError: cannot import name 'url_encode',本质是新版本Werkzeug移除了旧版Flask-WTF依赖的url_encode方法,导致版本不兼容。下面是针对Ubuntu18.04 + Python3.6环境的完美适配方案:

问题根源

旧版flask-wtf会直接从werkzeug导入url_encode,但Werkzeug 2.0+已经把这个方法迁移到了werkzeug.urls模块,并且修改了调用方式。而Python3.6只能支持Superset 1.4.x版本,所以必须锁定一套完全兼容的依赖版本。

适配的requirements.txt文件

直接用下面的依赖清单,确保所有库版本互相兼容:

# Apache Superset 1.4.3 适配 Python3.6 + Ubuntu18.04
superset==1.4.3
flask==1.1.4
flask-appbuilder==3.3.4
flask-wtf==0.14.3
werkzeug==1.0.1
sqlalchemy==1.3.24
pandas==1.1.5
jinja2==2.11.3
markupsafe==2.0.1
python-dateutil==2.8.2
requests==2.26.0
celery==4.4.7
redis==3.5.3
psycopg2-binary==2.8.6  # 若使用MySQL,替换为 mysqlclient==2.0.3

完整安装&修复步骤

  1. 清理现有冲突依赖
    先把之前安装的相关库全部卸载,避免残留:
pip uninstall -y werkzeug flask-wtf flask-appbuilder superset
  1. 安装系统级依赖(Ubuntu18.04必做)
    Superset需要一些系统库支持,先安装:
sudo apt-get update && sudo apt-get install -y build-essential libssl-dev libffi-dev python3.6-dev libsasl2-dev libldap2-dev
  1. 创建虚拟环境(强烈推荐)
    用虚拟环境隔离依赖,避免污染全局Python环境:
python3.6 -m venv superset_env
source superset_env/bin/activate
  1. 安装依赖并初始化
# 安装指定版本依赖
pip install -r requirements.txt

# 创建管理员账号
superset fab create-admin

# 初始化数据库(这一步之前失败的问题现在应该解决了)
superset db upgrade

# 可选:加载示例数据,方便测试
superset load_examples

# 初始化角色与权限
superset init

# 启动Superset服务
superset run -p 8088 --with-threads --reload --debugger

额外提醒

  • 如果之前用过SQLite作为数据库,建议删除当前目录下的superset.db文件后再执行db upgrade,避免旧数据结构冲突。
  • Python3.6已经停止维护,长期来看建议升级到Python3.8+,但如果必须用3.6,上面的版本组合是经过验证的稳定版本。

内容的提问来源于stack exchange,提问作者James Vasanth

火山引擎 最新活动