一个轻量级的思源笔记 Python 代码运行挂件,基于 Pyodide 实现浏览器端 Python 代码执行,无需后端服务器。
本项目基于 ay27/run_python_code 改进和优化
- 代码编辑与执行:基于 Monaco Editor 的专业代码编辑器,支持语法高亮
- 快速执行:支持快捷键执行(Ctrl+Enter)
- 状态持久化:自动保存代码和执行结果
- 主题切换:支持明暗主题切换
- 可调整布局:编辑器高度可拖拽调整
- 本地运行时:Pyodide 核心文件本地化,完全离线运行
- 前端框架:Vue 3 + TypeScript
- UI 组件:Element Plus + Tailwind CSS
- 代码编辑器:Monaco Editor
- Python 运行时:Pyodide 0.29.3
- 思源集成:@siyuan-community/siyuan-sdk
- 构建工具:Vite
在思源笔记中插入挂件,即可开始编写和运行 Python 代码:
快捷键:
Ctrl+Enter:执行代码
点击设置按钮可以配置主题和第三方库:
配置项:
- 编辑器主题:支持明亮/暗黑主题切换
# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建生产版本
pnpm build
# 或使用构建脚本
./build.sh # Linux/Mac
build.bat # Windows- 构建完成后,将
dist目录下的文件复制到思源笔记的挂件目录 - 或直接从集市下载安装
src/
├── components/ # Vue 组件
│ ├── MonacoEditor.vue # 代码编辑器
│ ├── OutputSection.vue # 输出区域
│ ├── SettingsDialog.vue # 设置对话框
│ └── ToolBar.vue # 工具栏
├── composables/ # 组合式函数
│ ├── useDataPersistence.ts # 数据持久化
│ └── usePythonExecution.ts # Python 执行逻辑
├── utils/ # 工具函数
│ ├── pyodide_wrapper.ts # Pyodide 封装
│ └── siyuan_client.ts # 思源 API 客户端
└── MainApp.vue # 主应用组件
- Pyodide 初始化:从本地加载核心文件,完全离线运行
- 代码执行:异步执行 Python 代码,捕获标准输出和错误
- 数据持久化:通过思源 API 保存代码、配置和执行结果
- Pyodide 仅支持纯 Python 包和标准库
- 核心运行时已本地化(~8-10MB),无需联网
- 不支持代码补全和格式化功能(需要额外的包)
- 完全离线运行,适合在无网络环境下使用
详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!
- ✅ 移除 Matplotlib 支持,减小体积
- ✅ Pyodide 核心文件本地化(~8-10MB)
- ✅ 升级到 Pyodide 0.29.3
- ✅ 移除所有联网功能,完全离线运行
- ✅ 移除代码补全和格式化功能
- ✅ 优化加载速度和性能
- ✅ 完善设置面板功能
- ✅ 支持代码格式化(Black)
- ✅ 支持第三方库安装配置
- ✅ 支持主题切换
- ✅ 优化 Pyodide 加载策略(多 CDN 源)
作者:Kaede221
原作者:ay27
项目地址:https://github.com/Kaede221/siyuan-run-python-code



