我想从我的Python项目中创建一个可执行文件。用户无需安装Python就可以下载并运行它。如果我只是分发软件包,则可以使用pip,wheel和PyPI来构建和分发它,但这需要用户具有Python并且知道如何安装软件包。我可以用什么从Python项目中构建一个自包含的可执行文件?
pdb
)无法轻松访问正在执行的文件,py2exe
(其他用户不知道)不包含.py
文件,因此您不会在堆栈跟踪中看到源代码行。
我想从我的Python项目中创建一个可执行文件。用户无需安装Python就可以下载并运行它。如果我只是分发软件包,则可以使用pip,wheel和PyPI来构建和分发它,但这需要用户具有Python并且知道如何安装软件包。我可以用什么从Python项目中构建一个自包含的可执行文件?
pdb
)无法轻松访问正在执行的文件,py2exe
(其他用户不知道)不包含.py
文件,因此您不会在堆栈跟踪中看到源代码行。
Answers:
这是一些常见的。除非明确指出,否则以下列出的所有项目在我上次编辑(2020年1月)时都将得到积极维护。
我还提供了指向各自网站,存储库和PyPi列表的链接,以备您检查自己更新的频率。
另外,除非另有说明,否则下面列出的所有程序都会为运行该操作系统的操作系统专门生成一个exe。因此,例如,在Windows中运行Pyinstaller会生成Windows exe,但是在Linux中运行Pyinstaller会生成一个Linux exe。如果要为多个操作系统生成exe,则必须考虑使用虚拟机或使用Wine等工具。
以下程序的工作方式相似-将Python和您的程序捆绑在一起,有效地将它们组合在一起以生成可执行文件。
PyInstaller:
cx_Freeze:
py2app:
注意:本文的早期版本包括py2exe(repo)和bbfreeze( repo)的文章。这两个项目都已从此列表中删除:它们几年来几乎没有活动,而且似乎完全没有维护。请参阅编辑历史记录中的旧文章。
当然,这不是唯一的处理方式:
pynsist:
努伊特卡:
cython:
我个人偏爱使用PyInstaller,因为它是我最容易启动和运行的工具,旨在与各种流行的库(例如numpy或pygame)很好地兼容,并且与各种OS和Python版本具有很好的兼容性。
但是,我也已经使用cx_Freeze成功构建了各种exe文件,没有太多困难,因此您也应该考虑尝试该程序。
我还没有机会尝试Pynist,Nuitka或Cython,但它们似乎是非常有趣且创新的解决方案。如果您在使用第一组程序时遇到麻烦,可能值得尝试这三种程序中的一种。由于它们的工作原理与Pyinstaller / cx_freeze风格的程序根本不同,因此,在第一个组失败的奇怪情况下,它们可能会成功。
特别是,我认为pynist是避免完全分发代码的整个问题的好方法:Mac和Linux已经具有对Python的本机支持,仅在Windows上安装Python可能确实是最干净的解决方案。(缺点是现在您需要担心将多个版本的Python +安装库作为目标)。
Nuitka和Cython(据我有限的经验)似乎工作得很好。同样,我自己还没有对它们进行全面的测试,因此我的主要观察结果是,与“ freeze”风格的程序相比,它们生成exe的时间似乎更长。
综上所述,将Python程序转换为可执行文件并不一定是分发代码的唯一方法。要了解有关其他可用选项的更多信息,请参见以下链接:
pyinstaller仍在积极开发中。您可以在GitHub上查看最新更改。
它支持所有三个主要平台:
并且支持Python版本2.6和2.7。它不支持Python 3,但是有一个实验性的Python 3分支。
从3.2.1版开始,它支持Python 2.7、3.3-3.5