Flet桌面应用打包教程:将Python应用转换为Windows、macOS和Linux可执行文件
你还在为Python应用的跨平台部署烦恼吗?是否希望用户无需安装Python环境就能运行你的程序?本文将带你使用Flet CLI工具,一步到位解决Windows、macOS和Linux系统的可执行文件打包问题。读完本文,你将掌握从环境配置到生成安装包的完整流程,让你的应用轻松触达更多用户。
准备工作:环境配置与依赖安装
在开始打包前,需要确保开发环境中已安装以下工具:
- Python 3.8或更高版本
- Flet SDK核心组件
- Flutter SDK(3.35.1或更高版本)
安装Flet CLI工具
Flet CLI是打包流程的核心工具,通过以下命令安装:
pip install flet-cli
安装完成后,验证CLI版本:
flet --version
配置Flutter环境
Flet基于Flutter实现跨平台能力,需安装对应平台的编译工具链:
- Windows:安装Visual Studio 2022(含"使用C++的桌面开发"工作负载)
- macOS:安装Xcode Command Line Tools
- Linux:安装
clang、cmake、ninja-build和pkg-config
基础打包流程:三行命令完成跨平台构建
Flet CLI提供了统一的打包命令,根据目标平台自动选择最佳配置。以下是三大桌面平台的基础打包指令:
Windows平台
flet build windows --project myapp --output dist/windows
macOS平台
flet build macos --project myapp --output dist/macos
Linux平台
flet build linux --project myapp --output dist/linux
官方构建矩阵显示,Windows版本需在Windows系统编译,macOS版本需在macOS系统编译,Linux版本可在任意系统构建。详细支持矩阵见sdk/python/packages/flet-cli/src/flet_cli/commands/build.py
高级配置:自定义应用信息与权限
修改应用元数据
通过命令行参数自定义应用名称、版本和标识符:
flet build windows \
--project myapp \
--product "My Application" \
--build-version 1.0.0 \
--build-number 100 \
--bundle-id com.mycompany.myapp
添加系统权限
对于需要特殊权限的应用(如访问摄像头、位置),使用--permissions参数:
flet build macos --permissions camera microphone location
macOS应用需配置权限描述文件,可通过--macos-entitlements参数添加:
flet build macos --macos-entitlements "com.apple.security.device.camera=True"
实战案例:计数器应用打包全过程
以经典的计数器应用为例,完整演示从项目创建到生成可执行文件的全过程。
创建示例项目
flet create counter_app
cd counter_app
项目结构如下:
counter_app/
├── main.py
├── requirements.txt
└── assets/
编辑应用代码
修改main.py实现简单计数器功能:
import flet as ft
def main(page: ft.Page):
page.title = "Flet Counter"
count = ft.Text("0", size=40)
def increment(e):
count.value = str(int(count.value) + 1)
page.update()
page.add(
ft.Column([
ft.Text("Click the button to increment:"),
count,
ft.ElevatedButton("Increment", on_click=increment)
], alignment=ft.MainAxisAlignment.CENTER)
)
ft.app(main)
执行打包命令
Windows平台完整打包命令:
flet build windows \
--project counter_app \
--product "Flet Counter" \
--company "Flet Examples" \
--copyright "© 2023 Flet Team" \
--output dist/windows \
--exclude "*.pyc" "venv"
打包完成后,可在dist/windows目录找到可执行文件和相关依赖。
常见问题解决:优化体积与兼容性
减小应用体积
使用--cleanup-packages和--compile-packages参数优化安装包大小:
flet build linux \
--cleanup-packages \
--compile-packages \
--exclude "tests" "docs"
处理依赖冲突
通过--source-packages参数指定特定版本依赖:
flet build windows --source-packages "requests==2.25.1" "numpy==1.21.0"
调试打包过程
添加--verbose参数查看详细构建日志,定位问题:
flet build windows --verbose
输出目录结构解析
成功打包后,输出目录包含以下关键文件:
- Windows:
build/windows/x64/runner/Release/myapp.exe - macOS:
build/macos/Build/Products/Release/My Application.app - Linux:
build/linux/x64/release/bundle/myapp
可通过--output参数自定义输出路径,推荐使用dist/[platform]结构统一管理不同平台的构建结果。
自动化构建:CI/CD集成指南
Flet打包流程可无缝集成到GitHub Actions、GitLab CI等持续集成服务。以下是GitHub Actions配置示例:
jobs:
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- run: pip install flet-cli
- run: flet build windows --project myapp --output dist/windows
- uses: actions/upload-artifact@v3
with:
name: windows-build
path: dist/windows
总结与进阶方向
通过Flet CLI,开发者只需简单命令即可将Python应用转换为原生桌面程序,大幅降低了跨平台部署门槛。本文介绍的基础命令和高级配置已能满足大多数应用场景,如需进一步定制,可查阅以下资源:
- 官方打包文档:sdk/python/packages/flet-cli/README.md
- 高级构建配置:sdk/python/packages/flet-cli/src/flet_cli/commands/build.py
- 示例项目集合:sdk/python/examples/apps/
下一篇我们将探讨如何为打包后的应用添加自动更新功能和错误报告系统,敬请期待!
本文示例代码已上传至仓库,可通过
git clone https://gitcode.com/gh_mirrors/fl/flet获取完整项目。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00