赞
踩
到目前为止,我们一直在“开发者模式”下运行我们的应用程序。这使我们可以轻松地在本地运行我们的应用程序 - 但我们真正想要的是能够将我们的应用程序提供给其他人。
但是,我们不想教我们的用户如何安装 Python、创建虚拟环境、克隆 git 存储库以及在开发人员模式下运行公文包。我们宁愿只给他们一个安装程序,并让应用程序 Just Work。
公文包可用于以这种方式打包您的应用程序以进行分发。
创建应用程序脚手架
由于这是我们第一次打包我们的应用程序,我们需要创建一些配置文件和其他脚手架来支持打包过程。从helloworld目录中,运行:
苹果系统
- (beeware-venv) $ briefcase create
-
- [helloworld] Generating application template...
- Using app template: https://github.com/beeware/briefcase-macOS-app-template.git
- ...
- [helloworld] Installing support package...
- ...
- [helloworld] Installing dependencies...
- ...
- [helloworld] Installing application code...
- ...
- [helloworld] Installing application resources...
- ...
- [helloworld] Created macOS/Hello World
Linux
(beeware-venv) $ briefcase create [helloworld] Generating application template... Using app template: https://github.com/beeware/briefcase-linux-appImage-template.git ... [helloworld] Installing support package... ... [helloworld] Installing dependencies... [helloworld] Entering Docker context... [helloworld] Building Docker container image... ... [helloworld] Leaving Docker context. [helloworld] Installing application code... ... [helloworld] Installing application resources... ... [helloworld] Created linux/Hello World
视窗
- (beeware-venv) C:\...>briefcase create
-
- [helloworld] Generating application template...
- Using app template: https://github.com/beeware/briefcase-windows-msi-template.git
- ...
- [helloworld] Installing support package...
- ...
- [helloworld] Installing dependencies...
- ...
- [helloworld] Installing application code...
- ...
- [helloworld] Installing application resources...
- ...
- [helloworld] Created windows\Hello World
您可能刚刚在终端中看到了内容页面……那么刚刚发生了什么?公文包做了以下事情:
1.它生成了一个应用程序模板。构建本机安装程序需要大量文件和配置,超出实际应用程序的代码。这个额外的脚手架对于同一平台上的每个应用程序几乎都是相同的,除了正在构建的实际应用程序的名称 - 所以公文包为它支持的每个平台提供了一个应用程序模板。此步骤推出模板,根据需要替换您的应用程序名称、捆绑 ID 和配置文件的其他属性,以支持您正在构建的平台。
如果您对公文包提供的模板不满意,您可以提供自己的模板。但是,在您对使用公文包的默认模板有更多经验之前,您可能不想这样做。
2.它下载并安装了一个支持包。公文包采用的打包方法最好被描述为“可能工作的最简单的东西”——它提供了一个完整的、独立的 Python 解释器作为它构建的每个应用程序的一部分。这有点空间效率低 - 如果您有 5 个使用公文包打包的应用程序,您将拥有 5 个 Python 解释器副本。但是,这种方法保证每个应用程序都是完全独立的,使用已知可与应用程序一起工作的特定 Python 版本。
同样,公文包为每个平台提供默认支持包;如果需要,您可以提供自己的支持包,并将该包包含在构建过程中。如果您在 Python 解释器中有需要启用的特定选项,或者如果您想从标准库中删除运行时不需要的模块,则可能需要执行此操作。
公文包维护支持包的本地缓存,因此一旦您下载了特定的支持包,该缓存副本将用于未来的构建。
3.它安装了应用程序依赖项。您的应用程序可以指定运行时所需的任何第三方模块。这些将使用pip安装到应用程序的安装程序中。
4.它安装了您的应用程序代码。您的应用程序将拥有自己的代码和资源(例如,运行时需要的图像);这些文件被复制到安装程序中。
5.它安装了您的应用程序所需的资源。最后,它添加了安装程序本身所需的任何其他资源。这包括需要附加到最终应用程序和启动屏幕图像的图标之类的东西。
完成后,如果您查看项目目录,您现在应该会看到与您的平台(、、或)相对应的目录macOS,linux其中windows包含其他文件。这是您的应用程序特定于平台的打包配置。
构建您的应用程序
您现在可以编译您的应用程序。此步骤执行您的应用程序在目标平台上可执行所需的任何二进制编译。
苹果系统
- (beeware-venv) $ briefcase build
-
- [helloworld] Built macOS/Hello World/Hello World.app
-
- On macOS,该build命令不需要执行任何操作。文件.app 夹是其macOS自身的布局约定;只要文件夹有.app扩展名,遵守一些内部布局规则,并在已知位置提供一些元数据,文件夹就会在操作系统中作为应用程序出现。
Linux
- (beeware-venv) $ briefcase build
-
- [helloworld] Built macOS/Hello World/Hello World.app
-
- 此步骤完成后,该linux文件夹将包含一个名为 . 这个 AppImage 是一个可执行文件;您可以从 shell 运行它,或者在文件资源管理器中双击它。您也可以将它提供给任何其他 Linux 用户,只要他们有 2016 年之后发布的 Linux 版本,他们应该能够以相同的方式运行它。Hello World-x86_64-0.0.1.AppImage
视窗
- (beeware-venv) C:\...>briefcase build
-
- [helloworld] Built windows\Hello World
- 在 Windows 上,此步骤不执行任何操作。Windows 上的分布式“二进制”是一个具有已知入口点的文件夹;安装程序(最终创建时)将编码有关如何启动应用程序的详细信息,并安装开始菜单项以调用应用程序。
运行你的应用
您现在可以使用公文包来运行您的应用程序:
苹果系统
- (beeware-venv) $ briefcase run
-
- [helloworld] Starting app...
-
- (beeware-venv) $
Linux
- (beeware-venv) $ briefcase run
-
- [helloworld] Starting app...
-
- (beeware-venv) $
视窗
- (beeware-venv) C:\...>briefcase run
-
- [helloworld] Starting app...
-
- (beeware-venv) C:\...>
这将使用build命令的输出开始运行您的本机应用程序 。
您会注意到我们之前看到的控制台输出将不再可见。这是因为我们现在正在运行一个独立的、打包的应用程序,它没有(可见的)控制台可以输出。
您可能还会注意到应用程序在运行时的外观有一些细微差别。例如,操作系统显示的图标和名称可能与您在开发者模式下运行时看到的略有不同。这也是因为您使用的是打包的应用程序,而不仅仅是运行 Python 代码。从操作系统的角度来看,您现在运行的是“应用程序”,而不是“Python 程序”,这反映在应用程序的外观上。
构建您的安装程序
您现在可以使用package 命令打包您的应用程序以进行分发。package 命令执行将脚手架项目转换为最终可分发产品所需的任何编译。根据平台的不同,这可能涉及编译安装程序、执行代码签名或执行其他预分发任务。
苹果系统
- (beeware-venv) $ briefcase package --no-sign
-
- [helloworld] Building DMG...
- ...
- [helloworld] Created macOS/Hello World-0.0.1.dmg
- 该macOS文件夹将包含一个名为. 如果您在 Finder 中找到此文件,并双击其图标,您将安装 DMG,为您提供 Hello World 应用程序的副本,以及指向您的应用程序文件夹的链接,以便于安装。将应用程序文件拖到应用程序中,您已经安装了您的应用程序。将 DMG 文件发送给朋友,他们应该也可以这样做。Hello World-0.0.1.dmg
-
- 在这个例子中,我们使用了这个--no-sign选项——也就是说,我们决定不签署我们的应用程序。我们这样做是为了保持教程简单。设置代码签名身份有点繁琐,只有当您打算将您的应用程序分发给其他人时,它们才是绝对需要的。如果我们要发布一个真正的应用程序,您将不用--no-sign标记。
-
- 当您准备好发布一个真实的应用程序时,请查看关于设置 macOS 代码签名身份的公文包操作指南
Linux
- (beeware-venv) $ briefcase package
-
- [helloworld] Building AppImage...
- ...
- [helloworld] Created linux/Hello World-x86_64-0.0.1.AppImage.
- 在 Linux 上,此步骤不执行任何操作。build 命令创建的 AppImage 是一个完整的可执行文件,不需要额外的处理。
视窗
- (beeware-venv) C:\...>briefcase package
-
- [helloworld] Building MSI...
- ...
- [helloworld] Created windows\Hello_World-0.0.1.msi
- 此步骤完成后,该windows文件夹将包含一个名为 Hello_World-0.0.1.msi. 如果您双击此安装程序来运行它,您应该经历熟悉的 Windows 安装过程。安装完成后,开始菜单中将出现“Hello World”条目。
下一步
我们现在已经打包了我们的应用程序,以便在桌面平台上分发。但是当我们需要更新应用程序中的代码时会发生什么?我们如何将这些更新放入打包的应用程序中?转到 教程 4以了解...
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。