Linux中的独立Python应用程序

33 投票
8 回答
29968 浏览
提问于 2025-04-11 09:32

我该如何在Linux上分发一个独立的Python应用程序呢?

我想在任何现代的Linux发行版中都可以假设会有一个比较新的Python解释器。问题是如何处理那些不属于标准库的库,比如wxPython、scipy、Python加密工具包、reportlab等等。

有没有类似于py2exe的Linux版本呢?顺便说一下,我自己从来没有尝试过py2exe。有没有免费的开源工具可以用呢?

8 个回答

10

你可以看看 setuptools 中的依赖声明。这可能会给你提供一种方法,确保所需的包在环境中可用,或者可以由有相应权限的人安装。

13

你可以使用 cx_Freeze 来实现这个功能。它的工作原理和 py2exe 类似(把解释器、启动脚本以及所有需要的库和模块打包在一起),但它可以在 Linux 和 Windows 上都使用。

它会收集运行环境中的依赖项,这意味着这些依赖项也需要适合目标环境。如果你是在 32 位的 Debian 上构建,然后在另一个 32 位的 Debian 上部署,那就没问题。你可以通过在合适的环境中(比如 32 位和 64 位的 chroot 环境)构建多个版本来处理 32 位和 64 位的差异,然后分发合适的版本。如果你想要更通用的东西(比如在 Debian 上构建,然后在任何发行版上部署),那就有点复杂了,这取决于你的依赖项具体是什么。

如果你要做的分发比较简单(也就是说,你知道你的构建环境和部署环境是相似的),那么这样可以避免比较复杂的 rpm/deb/egg 等步骤(使用 cx_Freeze 非常简单,特别是如果你对 py2exe 有一定了解的话)。如果不是的话,从自己制作依赖安装器到 deb/rpm/egg 等构建都可以,根据你想做多少工作、希望提供多少版本灵活性以及依赖项的具体情况来决定。

23

制作一个deb包(适用于所有基于Debian的系统)和一个rpm包(适用于Fedora和SuSE)。在打包时添加正确的依赖项,这样你就可以比较放心它能正常工作了。

撰写回答