py2winapp
一键把 Python Web 应用打包成 Windows 桌面程序。 双击 exe 即用,无需安装 Python。启动有闪屏、托盘常驻、单实例保护、自动选端口、自动开浏览器、自定义图标。
安装
pip install py2winapp
快速开始
1. 初始化项目
py2winapp init MyApp --entry-module myapp.web --with-icon
生成 py2winapp.toml、app/、build/ 骨架与默认图标。
2. 自定义图标
py2winapp icon --letter A --bg red --apply
py2winapp icon --letter Re --bg "#8B5CF6" --radius 0.5 --apply
预设配色:blue green red purple orange teal pink dark black white
3. 一键打包(Windows)
py2winapp build
产物在 dist/<AppName>/<AppName>.exe(onedir 模式)。
4. 开发调试(不打包)
py2winapp run
5. 仅生成 spec(任意平台)
py2winapp spec
6. 清理产物
py2winapp clean --what all
7. 环境诊断
py2winapp inspect
命令一览
| 命令 | 说明 |
|---|---|
init |
初始化新桌面项目 |
icon |
生成自定义图标 |
build |
一键打包成 Windows exe |
run |
不打包直接运行 launcher |
clean |
清理构建产物 |
inspect |
打印环境与配置信息 |
spec |
仅生成 .spec 文件 |
version |
打印版本 |
配置
全部参数集中在 py2winapp.toml(也支持 pyproject.toml 的 [tool.py2winapp])。完整字段见 docs/design_spec.md §4。
最小示例:
[app]
name = "MyApp"
slug = "myapp"
version = "0.1.0"
[app.entry]
module = "myapp.web"
function = "run_web"
[app.data]
include_packages = ["myapp"]
应用入口要求
入口函数签名必须为:
def run_web(host: str, port: int, **kwargs) -> None
阻塞调用,启动 Web 服务。py2winapp 不修改应用源码,仅通过配置注入。
退出码
| 码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 通用失败 |
| 2 | 配置错误 |
| 3 | 环境不满足 |
| 4 | 构建失败 |
| 5 | 产物校验失败 |
技术栈
- CLI:typer + rich
- 配置:pydantic v2 + TOML
- 模板:jinja2
- 图标:Pillow
- 托盘:pystray
- 闪屏:tkinter
- 打包:PyInstaller(onedir + windowed)
设计文档
详见 docs/design_spec.md。
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
py2winapp_cli-0.1.0.tar.gz
(26.0 kB
view details)
File details
Details for the file py2winapp_cli-0.1.0.tar.gz.
File metadata
- Download URL: py2winapp_cli-0.1.0.tar.gz
- Upload date:
- Size: 26.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c3438610436d61a500786ceaaf3853799c975af50bfaec87370b3ba10430ddf
|
|
| MD5 |
ed0f2835207a9f4649e8725e91a4aee3
|
|
| BLAKE2b-256 |
d9a1c23841d3f5fb60c6af6b7a2913b0a24676dff67c831f636cc2d2d93c7446
|