如何捆绑包含依赖项的 Python 应用程序?

Posted

技术标签:

【中文标题】如何捆绑包含依赖项的 Python 应用程序?【英文标题】:How to bundle a Python application including dependencies? 【发布时间】:2010-09-11 12:38:25 【问题描述】:

我需要将我的 Python 应用程序、它的依赖项和 Python 打包到一个 MSI 安装程序中。最终结果应该是:

Python 安装在标准位置 包及其依赖项安装在单独的目录中(可能是站点包) 安装目录应包含未压缩的 Python,并且不需要独立的可执行文件

【问题讨论】:

***.com/questions/2933/… 【参考方案1】:

这个关于 how to make a python into an executable 的问题有点重复。

归结为:

py2exe 在 Windows 上,Freeze 在 Linux 上,以及 py2app 在 Mac 上。

【讨论】:

不是真正的骗局。这是特定于包装的。另一个家伙还没有头绪。但是很酷,这是关于 py2exe 的信息【参考方案2】:

我使用PyInstaller(svn 版本)来创建我的程序的独立版本,其中包括 Python 和所有依赖项。让它正常工作并包含所有内容需要一些小技巧(py2exe 和其他类似程序也是如此,请参阅this question),但它运行得非常好。

然后您需要创建一个安装程序。 NSIS 很好用而且是免费的,但它创建的是 .exe 文件而不是 .msi。如果 .msi 不是必需的,我强烈推荐它。否则,请查看this 问题的答案以了解其他选项。

【讨论】:

【参考方案3】:

我的公司使用免费的 InnoSetup 工具。这是一个中等复杂的程序,对于构建 Windows 安装程序具有很大的灵活性。但是,我相信它会创建 .exe 而不是 .msi 文件。 InnoSetup 不是特定于 python 的,但我们为我们的一个产品创建了一个安装程序,它将 python 以及依赖项安装到用户在安装时指定的位置。

【讨论】:

【参考方案4】:

我在使用 pyinstaller 的依赖项和自定义文件夹结构方面获得了更好的结果,它可以让您找到并指定隐藏的导入和挂钩,以用于更大的依赖项,如 numpy 和 scipy。不过,它也是一个 PITA。

【讨论】:

八年后,PyInstaller 仍然是一个不错的选择,但仍然是一个巨大的 PITA。【参考方案5】:

py2exe 将生成带有 python 的 windows 可执行文件。

【讨论】:

【参考方案6】:

py2exe 是最好的方法。使用起来有点像 PITA,但最终效果非常好。

【讨论】:

【参考方案7】:

好的,我以前使用过 py2exe,它运行良好,除了一件事......它只适用于可执行的 Windows 机器。然后我了解了 Jython,它将 python 脚本转换为 .Jar 文件。如您所知,它可以从任何安装了 Java(“到您的最新运行版本”)的机器上执行。这很棒,因为 unix、windows 和 ios(大多数时候)都运行 java。这意味着它可以从以下所有机器执行。只要他们运行Java。无需“py2mac + py2exe + freeze”即可在所有操作系统上运行。只是 Jython

有关它的工作原理和使用方法的更多信息,请单击此处。 http://www.jython.org/

【讨论】:

请在您的解决方案中提供更多见解。解释术语,必要时附上外部链接。 很抱歉,它是一种简单的形式,例如 py2exe,可以将您的 python 项目转换为可执行的 jar 文件。只需快速 GoogleJjython,就这么简单。

以上是关于如何捆绑包含依赖项的 Python 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

我如何 Dockeries 包含 spark 依赖项的 python 脚本?

如何将具有依赖项的 python 脚本打包到 zip/tar 中?

如何使用捆绑包中的 node_modules 依赖项正确构建用于生产的 NestJS 应用程序?

如何使 Python 脚本独立可执行以在没有任何依赖项的情况下运行? [复制]

具有所有依赖项的 Python Windows 安装程序?

创建一个包含所有颤振库和依赖项的 aar