Pycharm 调试 superset 源码配置(远程调试)

2024-03-23 07:12

本文主要是介绍Pycharm 调试 superset 源码配置(远程调试),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境准备

centos7
python 3.8
anaconda
pycharm
我本地电脑是 windows 的,但是 superset 项目在 windows 下调试会出现很多问题,我就安装了一个虚拟机,通过 Pycharm 远程连接虚拟机进行调试,不知道如何配置 Pycharm 远程连接虚拟机的可以查看我这篇文章:
https://blog.csdn.net/qq_42586468/article/details/117561676

安装依赖

  1. 拉取官方代码

https://github.com/apache/superset.git 使用 2.1 版本分支

  1. 创建虚拟环境,这里使用 conda 创建的虚拟环境
  2. 执行安装命令,进入项目根目录执行(注意当前命令行是否已经激活虚拟环境)
# 需要执行下边命令yum install mysql-devel gcc gcc-c++ libffi-devel python3-devel python3-pip python3-wheel openssl-devel cyrus-sasl-devel openldap-develpip install --no-cache -r requirements/local.txt -i https://pypi.mirrors.ustc.edu.cn/simple/

修改配置文件

在项目根目录下创建配置文件: superset_config.py,该配置文件中的内容,会覆盖 superset/superset/config.py中的配置。
一般不会直接修改 config.py 文件,而是通过覆盖的方式去修改需要修改的配置内容,下边的配置修改了数据库连接信息,。
该信息从环境变量中获取,后边在配置Pycharm的时候,会说明 pycharm 的环境变量与启动配置(如果嫌配置环境变量麻烦,可以直接在配置文件中写硬编码写上数据库连接信息)。

#! /usr/bin/env python
# -*- coding:utf-8 -*-DATABASE_HOST = os.environ["DATABASE_HOST"]
DATABASE_PORT = os.environ.get("DATABASE_PORT", 3306)
DATABASE_USER = os.environ.get("DATABASE_USER", "test")
DATABASE_PASSWORD = os.environ["DATABASE_PASSWORD"]
DATABASE_NAME = os.environ["DATABASE_NAME"]REDIS_HOST = os.environ["REDIS_HOST"]
REDIS_PORT = os.environ["REDIS_PORT"]
REDIS_PASS = os.environ["REDIS_PASS"]
REDIS_CELERY_DB = 0
REDIS_RESULTS_DB = 1
REDIS_CACHE_DB = 2
REDIS_DATA_CACHE_DB = 3DATA_CACHE_CONFIG = {'CACHE_TYPE': 'redis','CACHE_DEFAULT_TIMEOUT': 60 * 30,  # 1 day default (in secs)'CACHE_KEY_PREFIX': 'superset_data_cache','CACHE_REDIS_URL': f"redis://:{REDIS_PASS}@{REDIS_HOST}:{REDIS_PORT}/{REDIS_DATA_CACHE_DB}"
}SQLALCHEMY_DATABASE_URI = 'mysql://{}:{}@{}:{}/{}?charset=utf8'.format(DATABASE_USER,

配置 Pycharm 启动 web 后端

注意:在配置 Pycharm 启动前,我们需要先根据上边的配置在对应数据库连接中创建对应的 db,否则下边启动会报数据库错误。
执行 Superset 命令
第一次启动superset 需要执行几步初始化命令,在Pycharm 远程终端依次执行以下命令:
image.png
image.png
激活环境变量
image.png
执行初始化命令

  • superset db upgrade
  • superset fab create-admin
  • superset init
  • superset load-examples

执行这一步会报错,说找不到 example 目录下的文件,需要修改下 superset/superset/examples/helpers.py下的一行代码,如下图,修改为正确的路径即可: image.png
可以在执行完 load_example 命令后修改回去,感觉像是 superset 的一个 bug.
load_example 的逻辑就是拉取 github 上 superset 官方的样例数据,写到我们自己的库里边,需要能够访问 github, 在加载的时候如果网络不好,可能会出现连接断开的情况,这个加载比较耗时,建议把加载完的样例代码注释掉(代码在 superset/superset/examples/helpers.py`load_example_run 函数中),当断开我们重新load 时,不需要再加载前边已经加载过的了:
image.png
如果网不好可以参考这篇文章,将数据下下来,然后从本地的 http url 加载:
https://blog.csdn.net/weixin_42225123/article/details/116458048

启动web 后端

superset 的后端使用的是 flask,对应的 app 在 superset/superset/app.py下边,我们需要创建一个调试用的 run.py引用 app:
image.png
run.py 文件内容如下:

from superset import create_appif __name__ == '__main__':app = create_app()app.run(host="0.0.0.0", port=8080, debug=True)

然后配置 run.py 的启动配置,需要配置环境变量:
image.png
后端启动成功后如下:
image.png

启动 web 前端

确保 centos7 已经安装了 nodejs

cd superset-frontend
npm install -g cnpm --registry=https://registry.npmmirror.com
npm config set registry https://registry.npmmirror.com
npm config get registrynpm config set puppeteer_download_host=https://npm.taobao.org/mirrors
cnpm i puppeteer
export PUPPETEER_SKIP_DOWNLOAD='true'npm ci
# 如果不需要调试前端代码,我们直接执行 build 就行了,无需执行 run dev
npm run build

前后端启动都启动成功后,可以访问 后端服务IP:8088查看superset web 界面:
image.png
这里的用户名和密码就是前边初始化的 admin, 登录进去后数据加载会有点慢,需要等一会儿,才能把example 数据加载出来.

总结

superset 的源码调试方式还是比较简单的,容易出问题的步骤应该就是环境安装了,最好是有 vpn,前后端都启动成功后,我们只需要在 Pycharm 中打断点就可以调试了。
superset 的目录结构还是比较清晰的,我们需要调试哪个模块到对应的目录下去找到对应的视图函数就行了。
后边会总结下superset 前端功能模块对应后端代码位置,以及源码说明,使用第三方登录验证 superset 源码改造等。

这篇关于Pycharm 调试 superset 源码配置(远程调试)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/837534

相关文章

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.