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

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads