摘要
1) 一句话总结 Preswald 是一个基于 Python 的静态站点生成器和 WASM 打包工具,允许开发者使用纯 Python 构建交互式数据应用,并将其打包为无需后端服务器、完全在现代浏览器中本地运行的静态文件。
2) 关键点
- 开源协议与语言:基于 Python 开发,采用 Apache License 2.0 开源协议。
- 纯代码与内置 UI:仅需编写 Python 代码(无需 JavaScript 或 Notebook),内置表格、图表、表单等可组合 UI 组件。
- 完全浏览器端执行:基于 WASM 运行时,直接在浏览器中运行 Pyodide、DuckDB、Pandas、Plotly 等数据栈,支持完全离线运行。
- 响应式引擎:采用基于依赖关系的有向无环图(DAG),状态变更时仅重新计算需要更新的部分。
- 静态导出与便携性:通过
preswald export命令将应用(含代码、数据、逻辑)打包为静态站点(输出至dist/目录),接收方无需安装本地依赖即可访问。 - 配置管理:通过
preswald.toml文件统一管理应用元数据、运行端口、UI 品牌及数据源。 - 开发工作流:提供
preswald init(初始化项目)和preswald run(启动默认 8501 端口的本地预览服务器)等标准命令。 - 默认安全与 AI 友好:数据和计算完全在本地控制(适合敏感数据和物理隔离环境),且应用结构完全可被 AI 代理检查和修改。
- 典型场景:适用于构建分析师仪表板、交互式报告、数据检查工具、离线工具包及实验面板。
3) 风险/不足
- 应用完全依赖于本地浏览器环境运行,必须使用支持 WASM、Pyodide 和 DuckDB 端侧执行的现代浏览器。
功能与定位
Preswald 是一个用于构建 Python 交互式数据应用的静态站点生成器和 WASM 打包工具。它能够将计算逻辑、数据访问和用户界面打包成独立的、基于文件的应用,并完全在浏览器中本地运行。作为重型 Web 应用平台的轻量级替代方案,Preswald 允许开发者使用 Python 构建仪表板、报告和数据工作流,并像分享普通文档一样进行分发,接收方无需安装任何本地依赖。
典型使用场景
- 分析师仪表板:构建数据摘要和可视化,并作为静态网站进行分享。
- 交互式报告:交付可根据用户输入实时更新的 Notebook 和数据报告。
- 数据检查工具:通过专用的 UI 快速探索文件、日志或数据快照。
- 离线工具包:为现场工作或安全/物理隔离(Airgap)环境打包应用。
- 实验面板:在独立的交互式应用中比较运行结果、跟踪指标并展示结论。
核心功能
- 纯代码构建:直接使用 Python 编写应用,无需编写 JavaScript 或使用 Notebook。
- 内置 UI 组件:提供表格、图表、表单等预置的可组合 UI 组件。
- 响应式引擎:基于依赖关系的有向无环图(DAG),状态变更时仅重新运行需要更新的部分。
- 静态导出:通过
preswald export命令即可将应用(包含 Python 代码、数据和查询逻辑)构建为静态站点(输出至dist/目录)。 - 配置管理:通过轻量级的
preswald.toml文件统一管理应用元数据、运行端口、UI 品牌(Logo、颜色)和数据源。
特色与差异点
- 完全浏览器端执行:基于 WASM 运行时,直接在浏览器中运行 Pyodide、DuckDB、Pandas、Plotly 和 Matplotlib 等完整数据栈。
- 无服务器与离线支持:无需后端服务器,支持完全离线运行,即使处理大型数据也能保持快速响应。
- 文件优先与高便携性:将复杂的逻辑、UI 和数据捆绑为可共享的单文件或文件夹,支持直接作为文件分享或嵌入到托管平台。
- 默认安全:数据和计算完全在本地控制,非常适合处理敏感数据。
- AI 友好:应用结构完全可被 AI 代理(Agents)检查和修改,可作为结构化工具提供给 AI 系统。
使用方式概览
- 安装:通过
pip install preswald或uv pip install preswald安装。 - 初始化:运行
preswald init my_app创建项目结构,自动生成应用逻辑文件 (hello.py)、配置文件 (preswald.toml)、密钥文件以及数据/图片目录。 - 本地开发:编写 Python 代码后,运行
preswald run启动本地开发服务器(默认端口 8501)预览应用。 - 导出分享:运行
preswald export将应用打包为静态文件,以便离线运行或分发。
限制与注意事项
- 应用完全依赖于本地浏览器环境运行,需要使用现代浏览器以支持 WASM、Pyodide 和 DuckDB 的端侧执行。
链接
- GitHub 仓库: https://github.com/StructuredLabs/preswald
- 官方网站: https://www.preswald.com/
- 官方文档: https://docs.preswald.com
- PyPI 主页: https://pypi.org/project/preswald/