前言
網上關於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,也可達到同樣的效果。