Pyloid 是一个把 Python 应用包装成桌面应用的框架:它把前端(HTML/CSS/JS,任何框架都行)和后端 Python 通过线程安全的 RPC 连接起来,支持多窗口、单实例/多实例、窗口定制,跨平台(Windows/macOS/Linux),并且代码结构干净直观。通俗点:让 Python 开发者能像写 Flask 那样写桌面 App,但跑出来跟原生差不多。
它解决了哪些痛点
- • 体积臃肿:相比 Electron 的整套 Chromium+Node,Pyloid 更轻量(取决于底层 Qt 的体积,但通常更接近原生)
- • Python ↔ JS 通信难:Pyloid 提供线程安全的 RPC,调用像本地函数一样自然,不用每次手动序列化、处理事件循环冲突
- • 桌面特性不够:窗口自定义、跨平台兼容性、以及把原生功能暴露给前端都内置好了
- • 开发体验:代码结构直观,文档有类似 NumPy 风格的 docstring,便于快速上手与复用
关键特性一览表
| |
| React / Vue / Svelte / 纯 JS / 任何能输出静态 web 的都行 |
| |
| |
| |
| |
| |
| |
安装和快速开始准备工作:先装好 Node.js 和 Python,另外 Pyloid 依赖 PySide6(基于 Qt),以及一个名叫 uv 的东西(通常是 uvicorn 风格的依赖?这里按官方提示准备)。步骤非常直接:
- 1. 全局准备(Windows/macOS/Linux 都类似)
- • npm create pyloid-app@latest这条会帮你生成一个 starter 模板,里面已经把前端目录、Python 后端、打包脚本都准备好了。
- • 进入项目目录,npm install(或 yarn)安装前端依赖
- • 启动后端(通常是 python main.py 或类似命令)
- • 启动前端(npm run dev)Pyloid 会处理前后端的 RPC 连接,你只管写页面和业务逻辑。
- 4. 打包发布模板里通常有打包脚本(打成 Windows exe、macOS app 或 Linux 可执行包),按文档走就行。Pyloid 的文档里也给出多平台打包建议。
(注:具体命令和配置请参考 Pyloid 的 README,或者模板内的 package.json / pyproject 配置)
示例:Python 中注册一个函数给前端调用写一个小例子:你在 Python 写个函数 get_data,前端直接调用并拿到数据。Pyloid 用 RPC 暴露此类函数,线程安全,你不用担心阻塞 UI。——这儿就不贴长代码块,模板里有完整示例。
优点
- • 更轻/更接近原生的打包体积(相比纯 Electron)
- • Python 开发者上手代价低,后端逻辑可复用现有代码库
- • RPC 线程安全、事件模型友好,减少异步、回调的烦恼
- • 多窗口、多实例、窗口定制这些桌面特性都内建,不用额外造轮子
缺点 / 局限
- • 依赖 PySide6(Qt)带来一定体积和原生依赖,需要在打包时处理许可证与兼容性问题(PySide6 是 LGPL)
- • 如果你的应用高度依赖 Chromium 特性(比如高级媒体编解码、特定 WebAPI),Pyloid 的 WebView 能力依赖系统和 PySide 的实现,可能有差异
- • 生态和社区不如 Electron 大,遇到非常边缘的问题可能需要自己查源码或 PR
- • 打包与签名在不同平台仍有细节问题,尤其是 macOS 的 notarization(不是 Pyloid 特有问题,但需要注意)
实用建议 / 什么时候选 Pyloid
- • 推荐场景:你是 Python 开发者,想保留大量 Python 业务逻辑、同时用现成前端快速做漂亮界面;关心应用体积和原生感;需要多窗口或深度定制窗口行为。
- • 不推荐场景:你的产品严重依赖 Chromium 专属特性、或你已经有成熟 Electron 打包流水线且团队熟悉 Electron(迁移成本需评估)。
总结Pyloid 把很多做桌面应用的繁琐环节给封装好了:线程安全 RPC、前端框架无关、多窗口支持、窗口定制、跨平台兼容……对于偏好 Python 的团队和个人项目来说,Pyloid 是把原型快速做成“产品级桌面应用”的好选择。缺点主要是底层依赖(Qt/PySide)和社区成熟度,但这些对于多数中小项目并不构成致命问题。想换掉 Electron 的人,值得试试。
项目地址:https://github.com/pyloid/pyloid