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获取完整项目。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0153- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0112