searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Windows上搭建superset远程开发环境

2023-05-23 03:12:56
173
0

本文旨在解决superset不支持windows系统环境开发调试等问题,在官方文档中,写到Windows时,需要在虚拟机里搭建Ubuntu来使用,官方是不支持Windows本地开发的。曲线救国,使用pycharm的远程调试功能实现代码在服务器上运行,Windows本地开发,同步。主要步骤:

  1. 准备机器及开发运行环境
  2. 配置pycharm远程解释器
  3. 安装后端依赖
  4. 安装前端依赖&编译
  5. 代码改造&debug
  6. 汉化

准备机器及开发运行环境

在这里使用了虚拟机VMware,安装centos7(为了开发和部署的环境一致),也可购买云服务器或公司机房服务器。机器上面需要安装

sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel

特别地,如果需要使用mysql 而不是自带的sqlite ,需要安装

yum install mysql-devel

否则,待会安装falsk app后端依赖----mysqlclient==1.4.2.post1 时可能会报如下错误:

安装python及python虚拟环境

centos自带了python2.7,但我们需要使用python 3.7以上,可以卸载掉自带的2.7 替换掉,也可以安装3并存 我使用anaconda,安装比较方便

curl -O https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.07-Linux-x86_64.sh
./Anaconda3-2019.07-Linux-x86_64.sh

安装过程中会提示安装位置,直接回车默认默认位置 /root/Anaconda3 安装成功后直接软连接到 /usr/bin/pyhton  (也可以配置环境变量)

ln -s(f) /root/anaconda3/bin/python /usr/bin/python(3) 
ln -s(f) /root/anaconda3/bin/pip /usr/bin/pip(3) 

我选择了直接暴力覆盖,这时候会影响之前依赖python2.7的应用,比如 yum ,需要修改yum文件

vim /usr/bin/yum 
将文件头
#!/usr/bin/python
改为
#!/usr/bin/python2.7

如果其他组件报错也可使用此方法修改 当然,也可以软连接的时候用python3。可以不用再修改这些应用的文件头。安装虚拟环境方便各个项目不同环境版本切换,强烈建议使用虚拟环境

python -m venv /root/dev/envs/superset_env
执行成功后即可在此路径下创建一个python虚拟环境
如不能执行虚拟环境的命令需要安装
pip install virtualenv

创建好虚拟环境后激活
source /root/dev/envs/superset_env/bin/activate

激活好后命令行会变为     (环境名)[username@hostname path ]  #

安装node

可以直接 yum install nodejs , 但我看到他要安装的版本比较低,便选择了从官网下载安装最新稳定版

 wget https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.xz
 xz -d  node-v14.16.0-linux-x64.tar.xz
 tar -xf node-v14.16.0-linux-x64.tar.xz
 安装成功后直接软连接到 /usr/bin/node  (也可以配置环境变量)
 ln -s nodepath/bin/node /usr/bin/node
 ln -s nodepath/bin/npm /usr/bin/npm
 注意:软连接时必须为自己实际路径的全路径,不能用相对路径
 node -v
 npm -v
 版本正常打印便说明安装成功

待会安装前端依赖时可能会很慢,这里配置一下全局淘宝源

npm config set registry https://registry.npm.taobao.org
配置完后查看一下是否成功
npm get registry

配置pycharm远程解释器

前面已经生成好了python的虚拟环境 superset_env 现在下载代码到机器

cd /root/dev
git clone https://github.com/apache/superset.git

打开本地 pycharm 新建一个项目 本地路径下 如 D:\DEV\superset_remote 点开解释器,选择已经存在的解释器

在ssh interpreter选项中填写远程服务器的地址和用户名。点击下一步在弹出的窗口中找到刚才生成的虚拟环境的python的位置 点击 finish  回到这里将远程项目地址的路径修改为刚刚下载代码的地址  /root/dev/superset 然后点击create就可以了 进入后 点击 「tools > deployment > configuration」进行配置

比如编码格式,映射关系,忽略的文件等, 这时,便可以从服务器同步代码到本地

安装后端依赖

在pycharm打开一个终端 ssh到远程服务器(也可在刚才的xshell终端中) 在这边比较方便查看目录结构 激活superset_env cd 到superset目录

安装依赖
pip install -r requirements/local.txt
开发模式安装
pip install -e .
创建管理员用户
superset fab create-admin
初始化数据库
superset db upgrade
创建默认角色和权限
superset init
加载演示的实例数据
superset load_examples #此处不科学上网的话会非常容易time out,如果不需要示例数据也可以跳过此步骤
启动后端(Dev server)
FLASK_ENV=development superset run -p 8088 --with-threads --reload --debugger

此处pip 可以加上 -i https://pypi.tuna.tsinghua.edu.cn/simple 使用清华源,也可直接全局配置pip 使用清华源

 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
 pip install --upgrade pip

安装前端依赖&编译

cd superset-frontend
安装前端依赖
npm ci
在watch mode 构建 dev assets ,当代码改变时自动重新构建
npm run dev

----------
也可以直接运行自带的js_build.sh

编译时可能报错Error from chokidar (/..../...): Error: ENOSPC: System limit for number of file watchers reached, 执行下面语句,修改限制。

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

代码改造

前端编译完成后即可直接在服务器上启动(FLASK_ENV=development superset run -p 8088 --with-threads --reload --debugger),但是如果想在本地使用pycharm调试 ,需要对代码进行改造

  1. 在superset/superset  新建run.py
from superset import create_app

if __name__ == '__main__':
    app = create_app()
    app.run(host='0.0.0.0', port=8088, debug=True)
# host 要写,否则默认127.0.0.1 无法在本地访问 并且需要关闭防火墙 systemctl status(stop) firewalld

直接运行会报错

需要将superset目录中的typing.py文件重命名为superset_typing.py,该文件的名称与python3的模块的名称相同了,如果不修改的话会导致这个错误,shift+F6重命名,pycharm会自动更新引用的位置。重命名后,把修改过的这两个文件 upload到服务器,打上断点(可选) ,点击debug 即可远程启动,本地调试。

汉化

在这个目录:superset/superset/translations 下存放着各个语言包 打开superset/superset/config.py

将 BABEL_DEFAULT_FOLDER 改为 zh 重新编译文件夹

pybabel compile -d ~/translations

编译成功后 重新启动即可汉化,如果需要更深度的汉化效果,需要在 superset、superset/translations/zh/LC_MESSAGES/messages.po 此文件中添加翻译映射,重新编译为 .mo 文件即可。

0条评论
0 / 1000
吕****伟
2文章数
0粉丝数
吕****伟
2 文章 | 0 粉丝