1、安装准备
- Anaconda promat
- Win11
- superset 2.1.0
- superset源码地址:GitHub - apache/superset: Apache Superset is a Data Visualization and Data Exploration Platform
- 文章参考: superset 开发环境搭建 - 掘金 (juejin.cn)
2、源码下载
在文件目录cmd中执行
# 下载源码
git clone https://github.com/apache/superset.git
# 进入项目目录
cd superset
# 切换到目标版本,按需自行修改
git checkout 1.3.2
在Anaconda Prompt中创建虚拟环境
# 新建虚拟环境superset_local
conda create -n superset_local python=3.9(Python版本X.X可以自己指定)
# 激活虚拟环境
conda activate superset_local
# 如有需要,删除虚拟环境
# conda env remove --name superset_local
3、安装依赖
现在源码为requirements文件夹,则不需要通过requirements.txt安装依赖包,直接执行最后一句
# prompt中切换路径
(base) C:\WINDOWS\system32>E:
(base) E:\>cd E:\xx\xx
# 进入superset项目的根目录
cd superset
# 安装依赖安装包
pip install -r requirements.txt
# 安装superset 本地测试依赖(不要漏了最后的点 . )
pip install -e .
4、配置Superset
# Superset的运行需要预配置FLASK_APP
set FLASK_APP=superset
# 初始化数据库
superset db upgrade
# 创建管理员用户
flask fab create-admin
# 创建默认角色和权限
superset init
# 安装案例(需要科学上网)
superset load-examples
上述步骤如有中断,需重新进入虚拟环境(如有),重新设置FLASK_APP
5、前端
cd superset-fontend
npm install
npm run dev
启动 superset server
// 开发调试
superset run -p 端口号
// 发布到局域网中
superset run -p 端口号 --with-threads --reload --debugger
访问网址 http://127.0.0.1:3000 ;如果后续需要启动,需要先启动前端以及执行命令set FLASK_APP=superset,否则服务启动失败
6、总结:
开发环境是热更新,需要同时启动两个服务。一个是服务端的服务 ,一个是前端的打包服务,修改前端的代码时,前端的代码会实时的打包更新到 superset/static/assets
文件夹下,服务端根据这个文件夹内的文件对前端的页面进行渲染。
报错
报错一:执行pip install -e 报错
ERROR: No matching distribution found for sqlalchemy-utils<0.37,>=0.36.6
这个错误是由于apache-superset所依赖的sqlalchemy-utils版本不符合要求导致的。根据错误信息,所需的最低版本是0.36.6,但是在当前环境中找不到匹配的版本。
pip install sqlalchemy-utils==0.36.6
报错二: 执行superset db upgrade 报错
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (D:\python\xx\envs\superset_local\lib\site-packages\markupsafe\__init__.py)
新版本中该方法被弃用了
# 卸载
pip uninstall markupsafe
# 固定版本为2.0.1
pip install markupsafe==2.0.1
报错三
ModuleNotFoundError: No module named 'cryptography.hazmat.backends.openssl.x509'
pip install --upgrade cryptography==3.3.2
报错四
pkg_resources.extern.packaging.requirements.InvalidRequirement: Expected matching RIGHT_PARENTHESIS for LEFT_PARENTHESIS, after version specifier
pytz (>dev)
setuptools>=67.0,会失败报错
# 查看setuptools版本
pip list
# 更新setuptools版本为66.0
pip install --upgrade setuptools==66.0
报错五
ModuleNotFoundError: No module named 'MySQLdb'
pip install mysqlclient
如果安装失败
# 查看支持版本
pip install mysqlclient==
# 安装支持版本
pip install mysqlclient==2.1.0
报错六:npm i 报错
npm i报错挺多是因为依赖发生冲突
# 清除npm缓存
npm cache clean --force
# 删除node_modules文件夹、package-lock.json文件
rmdir /s /q node_modules
del package-lock.json
# 绕过冲突,重新执行
npm install --force
报错七、执行superset init报错
ValueError: Invalid decryption key
密钥错误,可能仍使用之前部署的密钥,现在部署的密钥对应不上,打开页面后不能上传数据,存在该密钥对应数据库的数据;
# 若存在之前的密钥,使用之前的密钥
# 或者重新加密
superset re-encrypt-secrets --previous-secret-key <之前的KEY>
# 之前的密钥已经删除,使用新的数据库
# 在superset_config.py中修改/添加,替换连接数据库
SQLALCHEMY_DATABASE_URI = 'mysql://root:passwd@本机ip:port/database'