网上关于superset开发环境搭建的教程有很多,但是基本都已经过时不可用了,所以发出来这篇最新教程,希望大家少走一些弯路。
开发环境:ubuntu 19.10 + pycharm 2019.3.3 + python 3.7
项目版本信息:release分支 0.35.2
1. 克隆项目到本地:
git clone https://github.com/apache/incubator-superset
2. 准备环境,安装必要的工具包:
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev
3. 打开项目:运行Pycharm,选择File -> Open选项,打开incubator-superset项目。
4. 设置项目的python运行环境:选择File -> Settings 选项,打开设置界面,选择Project Interpreter选项,如下图所示:
点击如下图所示的位于右侧的设置按钮,选择Add选项:
在弹出来的Add python Interpreter界面,选择Virtualenv Environment -> New environment选项,如下图所示:
在这里需要注意的python版本一定要选成python3的版本,而不是python2。
在这里解释下为什么选择创建了python虚拟环境:在选择创建python虚拟环境后,会在该目录下生成venv文件夹,里面包含了python运行环境,以及项目依赖的第三方库都会被安装在该文件夹下,将项目拷贝到其他机器上部署时,拷贝整个项目文件夹即可,不需要再重新安装第三方依赖包。python虚拟环境主要就是解决包依赖的问题。
5. 更新pip版本:pycharm创建的python虚拟机环境,默认的pip工具存在bug,使用该pip来安装第三方工具包时会报这个错误:No module named 'pip._vendor'。打开Pycham中的终端(pycharm中的终端打开时会自动激活虚拟环境),执行下面命令更新pip:
sudo apt-get install curl && curl https://bootstrap.pypa.io/get-pip.py | python3
6. 安装项目依赖的第三方包:任意打开superset目录下的一个python文件,pycharm会提示需要安装依赖包,点击安装即可。也可以打开项目根目录下的requirements.txt文件,使用python -m pip install xxx 命令手动安装。
7. 重命名superset目录下的typing.py文件为superset_typing.py:该文件与python3自带的模块typing重名,不修改会导致项目运行报错。注意使用Shitf + F6选项来更新文件名,pycharm 会自动更新被引用位置的名字。
1. 环境准备:安装nodejs并设置环境变量,在pycharm终端中输入下面的命令检测是否正确安装:
(venv) wangzhe@wangzhe-ThinkPad:~/PycharmProjects/incubator-superset-master$ node --version
v10.19.0
(venv) wangzhe@wangzhe-ThinkPad:~/PycharmProjects/incubator-superset-master$ npm --version
6.13.4
2. 编译前端:展开superset-frontend文件夹,选中js_build.sh文件,右键 -> Run,开始编译前端项目。
3. 编译生成的文件存放目录:{项目根目录}/static/assets。
1. 将项目安装到本地python库:在pycharm终端中进入项目根目录,执行下面的命令:
python setup.py install
2. 初始化数据库:
superset db upgrade
3. 创建管理员账号:
export FLASK_APP=superset
flask fab create-admin
4. 加载测试数据:
superset load_examples
5. 项目初始化:
superset init
6. 运行项目:在superset目录下添加新文件run.py,添加如下内容:
from superset import create_app
if __name__ == '__main__':
app = create_app()
app.run(host="localhost", port=8080, debug=True)
在main方法左侧会出现运行按钮,点击运行即可,控制台输出内容如下:
打开浏览器,输入网址http://localhost:8080, 会出现如下的界面:
可能一些同学会奇怪,项目是要在pycharm中运行,为什么又要将安装到本地python库呢?这是因为需要使用superset命令来完成项目数据库的初始化。一种可替代方式是使用命令: python3 {项目根目录}/superset/bin/superset xxx,也可达到同样的效果。