Sha*_*ame 73 python packaging software-distribution exe compilation
我想从我的Python项目中创建一个可执行文件.用户应该能够在不需要安装Python的情况下下载并运行它.如果我只是分发一个包,我可以使用pip,wheel和PyPI来构建和分发它,但这需要用户拥有Python并知道如何安装包.我可以用什么来构建Python项目中的自包含可执行文件?
Mic*_*x2a 99
这是一些常见的.除非明确指出,否则下面列出的所有项目都会在我上次编辑(2018年8月)时得到积极维护.
我还提供了各自网站,回购和PyPi列表的链接,以便您自行查看更新频率.
另外,除非另有说明,否则下面列出的所有程序都会生成一个专门针对其运行的操作系统的exe.例如,在Windows中运行Pyinstaller将生成一个Windows exe,但在Linux中运行Pyinstaller将生成一个Linux exe.如果要为多个操作系统生成exe,则必须考虑使用虚拟机或使用Wine之类的东西.
以下程序的工作方式类似 - 它们将Python和您的程序捆绑在一起,有效地组合它们以生成可执行文件.
PyInstaller:
cx_Freeze:
pyapp:
注意:此帖的先前版本包括py2exe(repo)和bbfreeze(repo)的注释.这两个项目都已从这个列表中删除了:他们几年来看到几乎没有活动,似乎完全没有维护.请参阅旧写入的编辑历史记录.
当然,这不是唯一的做事方式:
pynsist:
Nuitka:
用Cython:
我个人的偏好是使用PyInstaller,因为它是我最容易起床和运行的,它被设计为与各种流行的库(例如numpy或pygame)很好地协作,并且与各种操作系统和Python版本具有很好的兼容性.
但是,我也使用cx_Freeze成功构建了各种exes而没有太多困难,所以你也应该考虑该程序.
我还没来得及尝试pynist,Nuitka,或用Cython广泛,但他们似乎是非常有趣和创新的解决方案.如果您在使用第一组程序时遇到麻烦,那么尝试这三个程序中的一个可能是值得的.由于它们的工作方式与Pyinstaller/cx_freeze风格的程序完全不同,因此它们可能会在第一组失败的奇数边缘情况下成功.
特别是,我认为pynist是一个很好地回避整个代码分发问题的好方法:Mac和Linux已经拥有对Python的原生支持,而在Windows上安装Python可能真的是最干净的解决方案.(现在的缺点是您需要担心针对多个版本的Python +安装库).
Nuitka和Cython(在我有限的经验中)似乎运作得相当好.再说一遍,我自己并没有对它们进行过广泛的测试,因此我的主要观察结果是它们似乎需要更长的时间才能生成一个exe,然后是"冻结"风格的程序.
最后要注意的是,如果您只想支持Linux,您可能需要考虑为您的软件包创建一个发行版软件包,而不是将其转换为可执行文件.可以帮助您完成此操作的列表工具超出了本文的范围,但如果您决定探索此路线,这里有一些阅读材料.
jte*_*ace 10
pyinstaller仍在积极开发中.您可以在GitHub上看到最新的更改.
它支持所有三个主要平台:
它支持Python版本2.6和2.7.它不支持Python 3,但有一个实验性的Python 3分支.
从版本3.2.1开始,它支持Python 2.7,3.3-3.5