有什么办法可以制作我的 python/gtk3 应用程序的 Windows 版本吗?

有什么办法可以制作我的 python/gtk3 应用程序的 Windows 版本吗?

我最近一直在使用 Quickly 和 GTK 3 进行大量编码。它很棒,我对一些结果很满意,但现在我想与运行 Windows 或 Mac 的人分享我的应用程序。有没有办法制作某种 Windows 安装程序,或者我必须在他们尝试安装各种库等时指导他们?提前谢谢。

答案1

GTK3 比较难...我马上就讲到它...

如果你使用类似的东西,那么为 Windows 完成一个 Python 项目实际上相当容易py2exe或者pyinstaller。也有商业选择,但时间太久了,我记不清它们的名字了。

无论哪种方式,您最终都会获得一个包含您需要的一切的完整 Python 环境。用户只需运行它即可。

现在回到工具包。GTK3 可以安装在 Windows 上,但它不是一个蓬勃发展或成熟的跨平台工具包。对此有一些疑问在 StackOverflow 上但我不知道它们提供了什么绑定。它们可能不适合 Python,但我希望我是错的。简而言之 - 您可能不想将 GTK3 用于跨平台应用程序。

除此之外,您还得寻找其他选择。三种流行的选择:

答案2

我在 PyGobject 的 gnome live 页面上添加了针对 win32 的构建说明 https://wiki.gnome.org/PyGObject#Building_on_Win32_with_cx_freeze

答案3

您可以制作 .deb 包,如果涉及依赖项,则可以指定它们,就像您通常安装的 .deb 包一样。

制作一个包并不简单,没有人可以用 1 或 2 个命令来教你,你需要阅读一些相关内容,所以我建议你阅读这个:

http://developer.ubuntu.com/packaging/html/

该网站的基本信息:

启动一个包

bzr-builddeb 包含一个插件,用于从模板创建新包。该插件是 dh_make 命令的包装器。如果您安装了 packaging-dev,则应该已经拥有这些。运行命令,提供包名称、版本号和上游 tarball 的路径:

$ sudo apt-get install dh-make
$ cd ..
$ bzr dh-make hello 2.7 hello-2.7.tar.gz

当它询问单个二进制文件需要哪种类型的软件包时。这会将代码导入分支并添加 debian/ 打包目录。查看内容。它添加的大多数文件仅用于专业软件包(例如 Emacs 模块),因此您可以先删除可选的示例文件:

$ cd hello/debian
$ rm *ex *EX

您现在应该自定义每个文件。

在 debian/changelog 中将版本号更改为 Ubuntu 版本:2.7-0ubuntu1(上游版本 2.7、Debian 版本 0、Ubuntu 版本 1)。同时将不稳定版本更改为当前开发的 Ubuntu 版本,例如 precise。

软件包构建工作的大部分工作都是由一系列名为 debhelper 的脚本完成的。debhelper 的具体行为会随着新的主要版本的出现而改变,compat 文件会指示 debhelper 应使用哪个版本。您通常需要将其设置为最新版本,即 8。

control 包含包的所有元数据。第一段描述了源包。第二段及以下段落描述了要构建的二进制包。我们需要将编译应用程序所需的包添加到 Build-Depends:。对于 hello,请确保它至少包含:

Build-Depends: debhelper(>= 8.0.0)您还需要在 Description: 字段中填写该程序的描述。

需要填写 copyright 以遵循上游源的许可证。根据 hello/COPYING 文件,这是 GNU GPL 3 或更高版本。

docs 包含您认为应该包含在最终包中的任何上游文档文件。

仅当您的软件包具有任何非标准功能时才需要 README.source 和 README.Debian,我们不需要,因此您可以删除它们。

source/format 可以保持原样,这描述了源包的版本格式,应该是 3.0(quilt)。

rules 是最复杂的文件。这是一个 Makefile,用于编译代码并将其转换为二进制包。幸运的是,现在大多数工作都由 debhelper 7 自动完成,因此通用 % Makefile 目标只需运行 dh 脚本即可运行所需的一切。

所有这些文件都在 debian 目录概述文章中进行了更详细的解释。

最后将代码提交到你的打包分支:

$ bzr commit -m "Initial commit of Debian packaging."

构建包

现在我们需要检查我们的打包是否成功编译了包并构建了.deb 二进制包:

$ bzr builddeb -- -us -uc
$ cd ../../

bzr builddeb 是一个在当前位置构建软件包的命令。-us -uc 告诉它不需要 GPG 签名编译。结果将放置在...

您可以使用以下命令查看包的内容:

$ lesspipe hello_2.7-0ubuntu1_amd64.deb

安装该包并检查其是否正常工作:

$ sudo dpkg --install hello_2.7-0ubuntu1_amd64.deb

下一步

即使它构建了 .deb 二进制包,您的打包过程也可能存在错误。我们的工具 lintian 可以自动检测到许多错误,该工具可以在源 .dsc 元数据文件和 .deb 二进制包上运行:

$ lintian hello_2.7-0ubuntu1.dsc
$ lintian hello_2.7-0ubuntu1_amd64.deb

其报告的每个问题的描述都可以在 lintian 网站上找到。

对包装进行修复后,您可以使用 -nc “no clean” 重建,而不必从头开始构建:

$ bzr builddeb -- -nc

检查软件包是否在本地构建后,您应确保使用 pbuilder 在干净的系统上构建它。如果您尚未设置 pbuilder-dist,请立即设置:

$ bzr builddeb -S
$ cd ../build-area
$ pbuilder-dist precise build hello_2.7-0ubuntu1.dsc

当您对软件包感到满意时,您会希望其他人对其进行审核。您可以将分支上传到 Launchpad 进行审核:

$ bzr push lp:~<lp-username>/+junk/hello-package

将其上传到 PPA(个人软件包存档)将确保其能够构建,并为您和其他人提供一种测试二进制软件包的简便方法。您需要在 Launchad 中设置 PPA,然后使用 dput 上传:

$ dput ppa:<lp-username> hello_2.7-0ubuntu1.changes

答案4

存在一个工具py2exe它将 Python 程序转换为独立的 Windows 可执行文件(包括 Python 解释器),我认为这就是您正在寻找的。

特别提到使用此工具打包 Gtk 应用程序。

但我担心它对 OS X 没有帮助。

相关内容