如何分发python GTK应用程序?

如何分发python GTK应用程序?

这与我之前问的问题相关这里。我的目标是创建和打包一个应用程序,以便在 Ubuntu 和其他 Debian 发行版中轻松安装。我知道最好的方法是创建 .deb 文件,用户可以使用该文件轻松地将我的应用程序安装到他们的系统上。

不过,我也希望确保我的应用程序有多种语言版本。这就是我提出这个问题的原因,您可以阅读这里在提供的答案中,我被要求使用 disutils 进行打包。然而,我在这里忽略了更大的图景。

为什么当我以 .deb 格式分发我的应用程序时需要包含 setup.py 文件?

我的目的是确保用户无需执行python setup.py安装我的应用程序的操作,而只需单击 .deb 文件即可。我已经从可用的优秀教程中知道如何创建 deb 文件这里。它清楚地展示了如何编辑规则、更改日志以及创建干净的 deb 文件所需的一切。

您可以查看我的应用程序源代码和文件夹结构Github如果它能帮助你更好地了解我的情况。

请注意,我浏览了官方的 Python 文档,发现这里。但我希望我能得到一个答案,让一个跛脚的人也能理解,因为我在这方面的知识相当贫乏。

答案1

您实际上并不需要使用构建系统来打包您的应用程序。

但是,不使用构建系统意味着您必须从头开始编写构建系统“免费”提供的所有功能。这不仅会给您带来更多工作量,而且您还需要自己动手。也就是说,除非您非常清楚自己在做什么,并且有意避免使用构建系统,否则最好依靠活跃社区支持的成熟工具,而不是启动和维护构建和安装脚本。

构建系统还将把构建和安装的大部分逻辑转移到系统本身,而不是打包。这样文件就会更干净、更简单debian/rules,也更易于维护。

现在对于您的 Python 应用程序,我们没有要求在您的其他问题上使用构建系统,但我们确实推荐了它。那就是 distutils/distutils-extra,因为它们是最常见的,并且对 Python 的支持更好。还有其他的,比如 autotools,但它们对于 Python 软件来说通常更复杂。

请注意,这不是非此即彼的问题。这就是可能引起混淆的地方。构建系统和打包是互补的。打包利用构建系统来创建包。因此,并不是通过添加 eg 文件就setup.py可以强迫用户使用它。相反,您可以更轻松地从您的应用程序中创建 .deb 包,用户只需单击它即可安装。

事实是这样的,你不需要需要使用构建系统,但它将极大地帮助您创建和维护您的包。您的选择:)

答案2

您是否只想将您的应用程序作为 .deb 包提供?那么运行其他 Linux 发行版(Fedora、Gentoo)甚至 Windows 的人怎么办?

Debian 的打包理念允许您在 .debs 上打包和分发软件,同时还维护可用于其他分发方法的“原始”源(即使是下载 tar.gz 并执行 的人)python setup.py。许多 Debian 的打包工具都假设(并且最适合)源代码树遵循标准的构建方式,无论是./configure; make; make installpython setup.pyperl Makefile.PL; make install还是其他。

为了实现这一点,Debian 的打包工具非常了解(并能与之协同工作)其他语言的构建框架。如果你使用它们,你可以免费获得很多东西。一个例子就是你在上一个问题中提到的 i18n 内容;如果你使用 Python/setup.py 的方式,你的 Debian 包几乎会自动选择它。如果你有使用 ./configure 并遵守 GNU 标准的源代码,那么打包它真的很容易。

我个人认为最终目标是允许您使用现有的构建框架/方法来帮助您的软件提供所需的安装功能,而无需将您锁定在打包二进制文件的特定方式中。请记住,在 Linux 世界中,有很多选择,人们会欣赏您的应用程序通过遵循标准构建方式来支持这种选择。

相关内容