从Python项目创建单个可执行文件

我想从我的Python项目创建一个单一的可执行文件。用户应该能够下载并运行它而不需要安装Python。如果我只是分发一个包,我可以使用pip,wheel和PyPI来构建和分发它,但这需要用户有Python并知道如何安装软件包。我可以使用什么来从Python项目构建自包含的可执行文件?
最佳答案
这里有一些常见的。除非明确指出,下面列出的所有项目都在我上次编辑(2016年12月)时积极维护。

我还包括到他们各自的回购的链接,以防你自己检查他们被更新的频率。

此外,除非另有说明,下面列出的所有程序将专门为其运行的操作系统生成一个exe。因此,例如,在Windows中运行Pyinstaller将生成一个Windows exe,但在Linux中运行Pyinstaller将生成一个Linux exe。如果你想为多个操作系统生产一个exe,你必须调查使用虚拟机或使用类似于Wine

以下程序都工作类似 – 它们将Python和您的程序捆绑在一起,有效地将它们组合在一起以生成可执行文件。

> Pyinstaller

>回购:https://github.com/pyinstaller/pyinstaller
>支持:在Windows,Mac和Linux上的Python 2.7和3.3。

> cx_Freeze

>回购:https://bitbucket.org/anthony_tuininga/cx_freeze
>支持:在Windows,Mac和Linux上的Python 2.6(包括Python 3)。
>其他说明:最新版本的cx_Freeze PyPi是从2014年12月 – 请参阅repo最新的更改。 cx_Freeze 5.0于2016年11月发布。

> py2exe

>回购:http://sourceforge.net/p/py2exe/svn/HEAD/tree/
>支持:仅限Windows。 py2exe version 0.6.9支持Python 2.4,而py2exe version 0.9.2.2支持Python 3.3。
>其他说明:py2exe for Python 2最近更新于2008,但py3exe为Python 3最后更新于2014年10月。

> pyapp

>回购:https://bitbucket.org/ronaldoussoren/py2app
>支持:Python 2.7 / 3.3.3在Mac上。

> bbfreeze

>回波:https://github.com/schmir/bbfreeze
>支持:Python 2.4 – 2.7,但不是Windows 3和Linux上的Python 3。
>其他注释:目前没有活动维护者。

你可以在The Hitchhiker’s Guide to Python: Freezing your code找到一个更深入的比较。

当然,这不是做事的唯一方法:

> pynsist

>回购:https://github.com/takluyver/pynsist
>支持:Python 2.7或Python 3.3。将只创建Windows安装程序。
>其他说明:Pynsist将为您的程序创建一个Windows安装程序,它将直接在用户的计算机上安装Python,而不是将其与代码捆绑在一起,并创建链接到Python脚本的快捷方式。虽然这个程序只生成Windows安装程序,它似乎可以在Mac和Linux计算机上的still run Pynsist

> Nuitka

> Repo(Github mirror):https://github.com/kayhayen/Nuitka
>支持:在Windows,Mac和Linux上的Python 2.6 – 2.7和Python 3.2。
>其他注释:Nuitka会逐字地编译你的Python代码并生成一个exe(而不是其他项目,只包括Python)来尝试和加快你的代码。作为副作用,你也会得到一个方便的exe,你可以分发。请注意,您需要在系统上安装一个C++ compiler

> cython

>回购:https://github.com/cython/cython
>支持:Windows,Mac和Linux上的Python 2.6和Python 3.2。
>其他注释:Cython类似于Nuitka,它是一个Python编译器。然而,不是直接编译你的代码,它会将它编译为C.然后可以获取该C代码和turn your code into an exe.您将需要一个C编译器在您的系统上可用。

我的个人偏好是使用PyInstaller,因为它是我最容易启动和运行,被设计为与各种流行的图书馆如numpy或pygame很好地工作,并与各种操作系统和Python版本很好的兼容性。

但是,我也成功地构建了各种exes使用cx_Freeze和py2exe没有太多的困难,所以你也应该肯定考虑检查那些。

我还没有机会尝试pynist,Nuitka或Cython广泛,但他们似乎是非常有趣和创新的解决方案。如果你使用第一组程序遇到麻烦,可能值得尝试这三个程序之一。因为它们的工作原理与Pyinstaller / cx_freeze风格的程序不同,它们可能会在第一组失败的奇数边缘情况下成功。

特别是,我认为pynist是一个很好的方式来回避整个分发你的代码的问题:Mac和Linux已经有Python的本地支持,只是在Windows上安装Python可能真的是最干净的解决方案。 (现在的缺点是,您需要担心定位多个版本的Python安装库)。

Nuitka和Cython(在我有限的经验)似乎工作相当好。再次,我没有自己测试它们广泛,所以我的主要观察是,他们似乎需要更长的时间来生产一个“冻结”样式的程序。

转载注明原文:从Python项目创建单个可执行文件 - 代码日志