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

相关文章

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

PyCharm如何设置新建文件默认为LF换行符

《PyCharm如何设置新建文件默认为LF换行符》:本文主要介绍PyCharm如何设置新建文件默认为LF换行符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm设置新建文件默认为LF换行符设置换行符修改换行符总结PyCharm设置新建文件默认为LF