打包桌面应用程序

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_programdist/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.py它们添加到带有参数的应用程序包中:--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.ymlappveyor.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 存储。