lixianglong 6edd51111f 修改pymienr 为electron框架
Signed-off-by: lixianglong <lixianglong@pyminer.com>
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00
2025-12-03 21:55:03 +08:00

Pyminer - 数据统计分析决策平台

项目概述

Pyminer 是一个基于 Electron + React 开发的轻量级数据统计分析和建模工具。应用主界面参考 Anaconda Navigator以卡片形式提供快速访问不同功能模块。

核心功能

  • JupyterLab 集成:一键启动 JupyterLab 服务,支持交互式数据分析
  • Jupyter Notebook 支持:直接打开和编辑 Jupyter Notebook 文件
  • 可视化流程分析:通过 WeStatFlow 模块实现数据分析工作流可视化
  • 代码编辑器:集成 Monaco Editor 的代码编辑功能WeStatCode
  • 数据处理:数据读取、清洗、建模、预测等完整数据科学工作流
  • 环境管理:支持 Python 包管理pip/conda和 Kernel 管理
  • 终端支持:集成 xterm.js 提供终端环境

设计理念

参考以下专业数据分析工具的设计:

  • SAS Enterprise Miner、SAS EG
  • FICO Model Build、RapidMiner
  • SPSS、Orange、MATLAB

技术架构

技术栈

组件 版本
Node.js v22.21.1
Electron Latest
React 19.2.0
TypeScript 5.9.3
Ant Design 6.0.0
Vite Latest
Python 3.13.9
Monaco Editor Latest
flexlayout-react Latest
xterm.js Latest

架构组成

┌────────────────────────────────────────────────────┐
│         Electron 主进程 & Preload                  │
├────────────────────────────────────────────────────┤
│  React 前端 (Vite 构建)                            │
│  ├─ 标题栏 & 菜单栏                                │
│  ├─ 活动栏 & 工具栏                                │
│  ├─ 主工作区 (Dockview + flexlayout)             │
│  │  ├─ 左侧:文件管理器                            │
│  │  ├─ 中间:主工作面板 + 底部面板                 │
│  │  └─ 右侧:变量查看器、历史记录、属性           │
│  ├─ 设置页面                                      │
│  └─ 状态栏                                        │
├────────────────────────────────────────────────────┤
│  后端服务                                          │
│  ├─ JupyterLab 服务 (Python 环境)                │
│  ├─ IPC 通信层                                    │
│  └─ 文件系统、路径、配置管理                       │
├────────────────────────────────────────────────────┤
│  Python 环境 (extensions/python)                  │
│  ├─ 解释器                                        │
│  ├─ Conda/Pip 包管理                             │
│  └─ 数据科学库                                    │
└────────────────────────────────────────────────────┘

下载与安装

前置要求

  • Node.js: v22.21.1 或更高版本
  • Python: 3.13.9(推荐)
  • npm: 10.9.4 或更高版本

项目依赖安装

1. Node.js 依赖

npm install

2. Python 环境配置

下载 Python 解释器,放在 extensions/python 目录下(如果当前没有则需要手动创建此目录)。

推荐 Python 安装方式:

方案 A使用 uv 管理 Python

# 下载并安装 uv
uv python install 3.13.9

# uv 会自动将 Python 安装到 extensions/python

方案 B手动配置

  1. 下载 Python 3.13.9
  2. 将 Python 程序放在 extensions/python 目录
  3. 确保 extensions/python/python.exe 存在

3. 安装 Python 包

Python 子环境中需要安装数据科学库:

cd extensions/python

# 使用 pip推荐
pip install -i https://mirrors.aliyun.com/pypi/simple/ \
  numpy pandas scipy scikit-learn matplotlib seaborn plotly statsmodels \
  jupyterlab notebook beautifulsoup4 xgboost lightgbm catboost \
  pymysql sqlalchemy fastapi jupyterlab-language-pack-zh-CN

# 或使用 conda
conda install -c conda-forge \
  numpy pandas scipy scikit-learn matplotlib seaborn plotly statsmodels \
  jupyterlab notebook beautifulsoup4 xgboost lightgbm catboost \
  pymysql sqlalchemy fastapi

主要 Python 依赖包:

包名 描述
numpy 数值计算
pandas 数据处理
scipy 科学计算
scikit-learn 机器学习
matplotlib, seaborn, plotly 数据可视化
statsmodels 统计建模
jupyterlab, notebook 交互式计算环境
beautifulsoup4 网页解析
xgboost, lightgbm, catboost 梯度提升算法
pymysql, sqlalchemy 数据库连接
fastapi 宗旨 API 开发
jupyterlab-language-pack-zh-CN 中文语言包

4. 其他子工具

Python 子环境中已预置:

  • Condaextensions/python/condabin/conda.bat
  • Pipextensions/python/Scripts/pip.exe

Node.js 环境中需要:

  • uv:需要不仅安装 Python也会用于创建新项目

开发环境配置

项目结构

pyminer/
├─ src/                    # 前端源代码
│  ├─ main/                # Electron 主进程
│  │  ├─ index.js       # 主进程入口
│  │  ├─ ipc/           # IPC 事件处理
│  │  ├─ menu/          # 菜单定义
│  │  ├─ windows/       # 窗口管理
│  │  └─ utils/         # 工具函数
│  ├─ components/           # React 组件
│  │  ├─ RibbonBar/     # 菜单栏
│  │  ├─ ActivityBar/   # 活动栏
│  │  ├─ FileExplorer/  # 文件管理器
│  │  ├─ CodeEditor/    # 代码编辑器
│  │  ├─ SqlEditor/     # SQL 编辑器
│  │  └─ ...
│  ├─ pages/                 # 页面组件
│  │  ├─ Home/          # 首页
│  │  ├─ Environment/   # 环境管理
│  │  ├─ Settings/      # 设置页面
│  │  └─ ...
│  ├─ layouts/               # 布局组件
│  │  ├─ GlobalLayout/  # 全局布局
│  │  ├─ StatusBar/     # 状态栏
│  │  └─ ...
│  ├─ stores/                # 全局状态
│  ├─ hooks/                 # 自定义 Hooks
│  ├─ theme/                 # 主题配置
│  ├─ locales/               # 国际化配置
│  ├─ assets/                # 静态资源
│  ├─ App.tsx                # 根组件
│  └─ main.tsx               # 应用入口
│
├─ public/                   # 公共资源
│  ├─ preload.js            # Preload 脚本
│  ├─ logos/                # 应用 LOGO
│  └─ ...
│
├─ extensions/              # 程序扩展
│  ├─ python/               # Python 环境
│  │  ├─ python.exe
│  │  ├─ Scripts/
│  │  ├─ condabin/
│  │  └─ Lib/
│  ├─ notebooks/            # Jupyter 上作目录
│  ├─ uv/                   # uv 工具
│  └─ ...
│
├─ vite.config.ts           # Vite 配置
├─ tsconfig.json            # TypeScript 配置
├─ package.json             # 项目配置
└─ README.md                # 本文档

开发上手

1. 安装依赖

npm install

2. 启动开发服务器

# 终端 1启动 Vite 开发服务器(支持热更新)
npm run dev

# 终端 2启动 Electron 开发应用
npm run electron-dev

应用启动后自动打开并支持热改写。在 Electron 开发者工具F12中可查看日志和配置信息。


运行与打包

运行应用

开发模式

# 终端 启动 Electron 开发应用
npm run electron-dev

应用启动后自动打开并支持热改写。在 Electron 开发者工具F12中可查看日志和配置信息。

生产模式

# 编译 TypeScript 并打包应用
npm run electron-pack

输出路径:release/ 目录Windows 环境下生成 NSIS 安装包。

打包配置注意事项

  • 资源加载:生产环境需正确配置 publicPathfile:// 协议处理
  • extensions 目录:确保 Python 环境和扩展工具随安装包一起发布
  • IPC 通信:生产环境下 IPC 消息传递需确保 Preload 脚本正常加载

默认配置项

应用默认设置

配置项 默认值 说明
Python 路径 extensions/python/python.exe 项目相对路径,启动时转换为绝对路径
Conda 路径 extensions/python/condabin/conda.bat 项目相对路径
Pip 路径 extensions/python/Scripts/pip.exe 项目相对路径
UV 路径 extensions/uv/uv.exe 项目相对路径
Jupyter 工作目录 extensions/notebooks 项目相对路径,启动时转换为绝对路径
Jupyter 端口 8888 默认通信端口
主题色 蓝色 应用主色调
语言 中文 应用界面语言
窗口外观 亮色 light/dark

路径配置规则

应用启动时,根据运行模式自动配置路径:

开发模式 (npm run electron-dev)

  • 在项目根目录下寻找 extensions 目录
  • 所有相对路径转换为项目绝对路径

生产模式 (打包后应用)

  • 在应用根目录下寻找 extensions 目录
  • 所有相对路径转换为应用绝对路径

核心功能指引

应用卡片机制

  • 首页展示:以卡片形式展示已安装的应用和功能
  • 自定义应用:支持添加、编辑、删除、收藏应用卡片
  • 启动逻辑
    • 网页类:调用系统默认浏览器打开 URL
    • 应用类:启动本地程序或 JupyterLab 服务

设置页面功能

左侧分类导航:

  • 通用设置(主题、语言、字体、开机自启)
  • Python 配置(路径设置)
  • Jupyter 配置(工作目录、端口)
  • 应用卡片(导入/导出、管理)

右侧设置项:

  • 对应分类的详细配置
  • 支持搜索功能
  • 支持恢复默认值

状态栏功能

状态栏显示以下信息:

区域 内容
左侧 Python 版本、环保管理工具版本、Jupyter Kernel 状态
右侧 通知图标(铃铛)和未读通知数

功能说明:

  • 点击 Python 版本号:打开 Python 版本切换窗口
  • 点击 Kernel 状态:打开 Kernel 选择窗口
  • 点击通知图标:展开通知面板

文件关联行为

文件类型 处理方式
.ipynb 自动启动 JupyterLab工作目录设置为文件所在目录
.py 在 WeStatCodeMonaco Editor中打开自动进行代码着色
.csv 通过数据导入对话框打开,支持数据预览和导入参数设置

功能开发清单

已完成功能

  • 应用主框架Electron + React + TypeScript
  • 全局布局(标题栏、活动栏、工作区、状态栏)
  • JupyterLab 集成启动、通信、Kernel 管理)
  • 代码编辑器Monaco Editor 集成)
  • 设置页面(配置管理)
  • 文件管理器(基础文件浏览)
  • 国际化支持(中英文切换)

功能规划

  • 🔄 完善数据导入界面CSV/Excel 导入)
  • 🔄 数据查看器(导入数据预览)
  • 🔄 环境管理页面(包管理)
  • 🔄 变量查看器优化
  • 🔄 历史记录查看器
  • 🔄 终端组件xterm.js
  • 🔄 应用卡片导入/导出
  • 🔄 主题定制(浅色/深色)
  • 🔄 Splash 启动屏

常见问题

关于 Python 路径

Q: Python 路径应该如何配置?

A: 在设置页面的 "Python 配置" 中配置绝对路径。建议使用项目自带的 Pythonextensions/python/python.exe)。修改后重启应用生效。

关于 JupyterLab 服务

Q: 点击 JupyterLab 应用卡片没有反应?

A:

  1. 检查设置页面中的 Python 路径是否正确
  2. 检查 Jupyter 工作目录是否存在
  3. 查看 Electron 开发工具F12中的错误信息

关于文件关联

Q: 打开 .py 文件后没有代码着色?

A: 检查文件是否被正确识别,可以在 WeStatCode 的设置中手动选择语言类型。


获取帮助

  • 项目源码[GitHub 仓库](待补充)
  • 问题反馈:提交 Issue 或 Pull Request
  • 开发文档:查看 src/ 目录下各模块的 README 文件

最后更新2025 年 12 月 3 日

版本3.0.1

Description
pyminer 是一款基于Python的开源、跨平台数据处理计算解决方案,通过加载各种插件实现不同的需求,用易于操作的形式,在统一的界面中,通过数据计算实现用户所设想的任务。
Readme GPL-3.0 232 MiB
Languages
JavaScript 72.1%
TypeScript 23.9%
CSS 3.9%
HTML 0.1%