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

相关文章

CentOS 7 YUM源配置错误的解决方法

《CentOS7YUM源配置错误的解决方法》在使用虚拟机安装CentOS7系统时,我们可能会遇到YUM源配置错误的问题,导致无法正常下载软件包,为了解决这个问题,我们可以替换YUM源... 目录一、备份原有的 YUM 源配置文件二、选择并配置新的 YUM 源三、清理旧的缓存并重建新的缓存四、验证 YUM 源

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1

mybatis的mapper对应的xml写法及配置详解

《mybatis的mapper对应的xml写法及配置详解》这篇文章给大家介绍mybatis的mapper对应的xml写法及配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录前置mapper 对应 XML 基础配置mapper 对应 xml 复杂配置Mapper 中的相

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

PyCharm如何从C盘转移到D盘

《PyCharm如何从C盘转移到D盘》:本文主要介绍PyCharm如何从C盘转移到D盘的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm从C盘转移到D盘找到在C盘的pycharm,复制整个文件夹到D盘指定位置创建新的快捷方式转移C盘中Pych