摘要

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 系统。

使用方式概览

  1. 安装:通过 pip install preswalduv pip install preswald 安装。
  2. 初始化:运行 preswald init my_app 创建项目结构,自动生成应用逻辑文件 (hello.py)、配置文件 (preswald.toml)、密钥文件以及数据/图片目录。
  3. 本地开发:编写 Python 代码后,运行 preswald run 启动本地开发服务器(默认端口 8501)预览应用。
  4. 导出分享:运行 preswald export 将应用打包为静态文件,以便离线运行或分发。

限制与注意事项

  • 应用完全依赖于本地浏览器环境运行,需要使用现代浏览器以支持 WASM、Pyodide 和 DuckDB 的端侧执行。

链接

关联主题