打包桌面应用程序
Flet Python 应用程序及其所有依赖项可以打包成可执行文件,用户可以在他们的计算机上运行它,而无需安装 Python 解释器或任何模块。
PyInstaller用于将 Flet Python 应用程序及其所有依赖项打包到一个适用于 Windows、macOS 和 Linux 的包中。要创建 Windows 包,PyInstaller 必须在 Windows 上运行;要构建 Linux 应用程序,它必须在 Linux 上运行;并在 macOS 上构建 macOS 应用程序。
从安装 PyInstaller 开始:
pip install pyinstaller
导航到您的.py
文件所在的目录并使用以下命令构建您的应用程序:
pyinstaller your_program.py
您捆绑的 Flet 应用程序现在应该在dist/your_program
文件夹中可用。尝试运行程序,看看它是否有效。
在 macOS/Linux 上:
./dist/your_program/your_program
在 Windows 上:
dist\your_program\your_program.exe
现在您可以压缩dist/your_program
文件夹的内容并分发给您的用户!他们不需要安装 Python 或 Flet 来运行您的打包程序 - 这是 Electron 的绝佳替代品!
您会注意到,当您从 macOS Finder 或 Windows 资源管理器运行打包程序时,会打开一个新的控制台窗口,然后会打开一个顶部带有应用程序 UI 的窗口。
--noconsole
您可以通过使用switch重建包来隐藏该控制台窗口:
pyinstaller your_program.py --noconsole --noconfirm
捆绑到一个文件
目录的内容dist/your_program
是一个应用程序可执行文件和支持资源:Python 运行时、模块、库。
--onefile
您可以使用switch将所有这些打包在一个可执行文件中:
pyinstaller your_program.py --noconsole --noconfirm --onefile
您将在文件夹中获得更大的可执行dist
文件。该可执行文件是一个自运行存档,其中包含您的程序和运行时资源,在运行时会解压缩到临时目录中 - 这就是启动“onefile”包需要更长的时间的原因。
注意 对于 macOS,您可以分发其中一个
dist/your_program
或dist/your_program.app
哪个是应用程序包。
自定义包
默认捆绑应用程序图标是软盘,这可能会让年轻的开发人员感到困惑,因为他们错过了那些使用软盘存储计算机数据的古老时代。
--icon
您可以通过添加参数将图标替换为您自己的图标:
pyinstaller your_program.py --noconsole --noconfirm --onefile --icon <your-image.png>
PyInstaller 会将提供的 PNG 转换为特定于平台的格式(.ico
适用于 Windows 和.icnsmacOS
),但您需要为此安装Pillow模块:
pip install pillow
包装
您的 Flet 应用程序可以包含资产。如果应用程序资产位于assets
旁边的文件夹中,则可以在 macOS/Linux 上将your_program.p
y它们添加到带有参数的应用程序包中:--add-data
pyinstaller your_program.py --noconsole --noconfirm --onefile --add-data "assets:assets"
在 Windows 上assets
;assets
必须用 分隔;
:
pyinstaller your_program.py --noconsole --noconfirm --onefile --add-data "assets;assets"
注意 你可以在这里找到所有 PyInstaller 命令行选项
使用 CI 进行多平台
要使用 PyInstaller 为特定操作系统创建应用程序包,它必须在该操作系统上运行。
如果您无法访问 Mac 或 PC,您可以将您的应用程序与AppVeyor捆绑在所有三个平台上- 适用于 Windows、Linux 和 macOS 的持续集成服务。简而言之,持续集成 (CI) 是在每次推送到存储库时构建、测试和部署(持续交付 - CD)应用程序的自动化过程。
AppVeyor 对于托管在 GitHub、GitLab 和 Bitbucket 上的开源项目是免费的。要使用 AppVeyor,请将您的应用程序推送到其中一个源代码控制提供程序中的存储库。
要开始使用 AppVeyor,请注册一个免费帐户。
单击“新建项目”按钮,授权 AppVeyor 访问您的 GitHub、GitLab 或 Bitbucket 帐户,选择您的程序的存储库并创建一个新项目。
现在,要为 Windows、Linux 和 macOS 配置应用程序打包,请将包含以下内容的文件添加到存储库的根目录中appveyor.yml
。appveyor.yml
是一个构建配置文件或 CI 工作流程,描述了必须在每次提交时运行的构建、测试、打包和部署命令。
注意 您可以只 fork flet-dev/python-ci-example存储库并根据您的需要对其进行自定义。
当您将任何更改推送到 GitHub 存储库时,AppVeyor 将自动启动一个新构建:
CI 工作流在每次推送到存储库时所做的事情:
- 将存储库克隆到干净的虚拟机。
- 使用pip.
- 运行以将 Python 应用程序打包到适用于Windows、macOS和Ubuntupyinstaller的“onefile”包中。
- Zip/Tar 打包并上传到"Artifacts"。
- 推送新标签时将包上传到GitHub 版本。只需推送一个新标签即可发布!
GITHUB_TOKEN
GITHUB_TOKENinappveyor.yml
是 AppVeyor 用来将创建的包发布到存储库“Releases”的 GitHub 个人访问令牌 (PAT)。您需要生成自己的令牌并将其替换为appveyor.yml
. 登录到您的 GitHub 帐户并导航到个人访问令牌页面。单击“生成新令牌”并分别为公共或私有存储库选择“public_repo”或“repo”范围。将生成的令牌复制到剪贴板并返回 AppVeyor Portal。导航到加密配置数据页面并将令牌粘贴到“要加密的值”字段,单击“加密”按钮。将加密值放在GITHUB_TOKEN您的appveyor.yml
.
为您的 Python 项目配置 AppVeyor,将新标签推送到存储库并“自动”获取 GitHub 版本中所有三个平台的桌面包!
除了GitHub Releases,您还可以配置将工件发布到Amazon S3 存储桶或Azure Blob 存储。