mirror of
https://gitee.com/py2cn/pyminer.git
synced 2025-12-06 11:49:11 +08:00
master
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:手动配置
- 下载 Python 3.13.9
- 将 Python 程序放在
extensions/python目录 - 确保
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 子环境中已预置:
- Conda:
extensions/python/condabin/conda.bat - Pip:
extensions/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 安装包。
打包配置注意事项
- 资源加载:生产环境需正确配置
publicPath和file://协议处理 - 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 |
在 WeStatCode(Monaco Editor)中打开,自动进行代码着色 |
.csv |
通过数据导入对话框打开,支持数据预览和导入参数设置 |
功能开发清单
已完成功能
- ✅ 应用主框架(Electron + React + TypeScript)
- ✅ 全局布局(标题栏、活动栏、工作区、状态栏)
- ✅ JupyterLab 集成(启动、通信、Kernel 管理)
- ✅ 代码编辑器(Monaco Editor 集成)
- ✅ 设置页面(配置管理)
- ✅ 文件管理器(基础文件浏览)
- ✅ 国际化支持(中英文切换)
功能规划
- 🔄 完善数据导入界面(CSV/Excel 导入)
- 🔄 数据查看器(导入数据预览)
- 🔄 环境管理页面(包管理)
- 🔄 变量查看器优化
- 🔄 历史记录查看器
- 🔄 终端组件(xterm.js)
- 🔄 应用卡片导入/导出
- 🔄 主题定制(浅色/深色)
- 🔄 Splash 启动屏
常见问题
关于 Python 路径
Q: Python 路径应该如何配置?
A: 在设置页面的 "Python 配置" 中配置绝对路径。建议使用项目自带的 Python(extensions/python/python.exe)。修改后重启应用生效。
关于 JupyterLab 服务
Q: 点击 JupyterLab 应用卡片没有反应?
A:
- 检查设置页面中的 Python 路径是否正确
- 检查 Jupyter 工作目录是否存在
- 查看 Electron 开发工具(F12)中的错误信息
关于文件关联
Q: 打开 .py 文件后没有代码着色?
A: 检查文件是否被正确识别,可以在 WeStatCode 的设置中手动选择语言类型。
获取帮助
- 项目源码:[GitHub 仓库](待补充)
- 问题反馈:提交 Issue 或 Pull Request
- 开发文档:查看
src/目录下各模块的 README 文件
最后更新:2025 年 12 月 3 日
版本:3.0.1
Languages
JavaScript
72.1%
TypeScript
23.9%
CSS
3.9%
HTML
0.1%