Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python项目创建单个可执行文件_Python_Compilation_Exe_Packaging_Software Distribution - Fatal编程技术网

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

从Python项目创建单个可执行文件,python,compilation,exe,packaging,software-distribution,Python,Compilation,Exe,Packaging,Software Distribution,我想从Python项目中创建一个可执行文件。用户应该能够下载并运行它,而无需安装Python。如果我只是分发一个包,我可以使用pip、wheel和PyPI来构建和分发它,但这需要用户拥有Python并知道如何安装包。我可以使用什么从Python项目构建一个自包含的可执行文件?仍在积极开发中。你可以在GitHub上看到 它支持所有三大平台: Windows(32位和64位) Linux(32位和64位) Mac OS X(32位和64位) 并且它支持Python版本2.6和2.7。它不支持Py

我想从Python项目中创建一个可执行文件。用户应该能够下载并运行它,而无需安装Python。如果我只是分发一个包,我可以使用pip、wheel和PyPI来构建和分发它,但这需要用户拥有Python并知道如何安装包。我可以使用什么从Python项目构建一个自包含的可执行文件?

仍在积极开发中。你可以在GitHub上看到

它支持所有三大平台:

  • Windows(32位和64位)
  • Linux(32位和64位)
  • Mac OS X(32位和64位)
并且它支持Python版本2.6和2.7。它不支持Python3,但有一个实验版本

更新
从版本3.2.1开始,它支持Python2.7、3.3-3.5。除非明确说明,以下列出的所有项目在我上一次编辑(2020年1月)时都在积极维护

我还提供了他们各自网站、回购协议和PyPi清单的链接,以防你想自己查看它们的更新频率

此外,除非另有说明,否则下面列出的所有程序都将专门为其运行的操作系统生成exe。例如,在Windows中运行Pyinstaller将生成Windows exe,但在Linux中运行Pyinstaller将生成Linux exe。如果您想为多个操作系统生成一个exe,您必须考虑使用虚拟机或类似的工具


以下程序的工作方式都很相似——它们将Python和您的程序捆绑在一起,有效地将它们结合起来,生成一个可执行文件

  • PyInstaller:

    • 链接:| | | |
    • 支持:在Windows、Mac和Linux上支持Python 2.7和Python 3.4-3.7
  • cx\u冻结:

    • 链接:||||
    • 支持:在Windows、Mac和Linux上支持Python 2.7和3.5-3.8
  • py2app:

    • 链接:||||
    • 仅在Mac上支持:Python 2.7和3.3(?)-3.7(?)
    • 注意:在我上次编辑时,我还无法确定pyapp支持的Python版本的确切范围。最新版本提到支持Python 3.7
注意:这篇文章的早期版本包括()和()的评论。这两个项目都从这个列表中删除了:它们已经好几年没有看到什么活动了,而且看起来完全没有维护。请参见编辑旧写操作的历史记录


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

  • pynsist:

    • 链接:||||
    • 支持:所有Python版本?注意--将仅创建Windows安装程序
    • 其他注意事项: Pynsist似乎支持将任意Python版本与应用程序捆绑在一起。但是,该工具本身需要运行Python 3.5+

      Pynsist将为您的程序创建一个Windows安装程序,该程序将直接在用户的计算机上安装Python,而不是将其与代码捆绑在一起,并创建链接到Python脚本的快捷方式。虽然该程序只生成Windows安装程序,但您似乎可以在Mac和Linux计算机上安装

  • Nuitka:

    • 链接:||||
    • 支持:在Windows、Mac和Linux上支持Python 2.6-2.7和Python 3.3-3.7
    • 其他注意事项:Nuitka将编译您的Python代码并生成一个exe(与其他项目不同,这些项目只包含Python),以尝试加快代码的速度。作为一个副作用,您还可以得到一个方便的exe,您可以分发。请注意,您的系统上需要有可用的
  • cython:

    • 链接:||||
    • 支持:在Windows、Mac和Linux上支持Python 2.6-2.7和Python 3.2-3.8
    • 其他注意事项:Cython与Nuitka类似,因为它是Python编译器。但是,它不会直接编译代码,而是将其编译为C。然后,您可以使用该C代码并进行修改。您需要在系统上提供一个C编译器

我个人的偏好是使用PyInstaller,因为它对我来说是最容易启动和运行的,它的设计可以很好地与各种流行的库(如numpy或pygame)配合使用,并且与各种操作系统和Python版本具有很好的兼容性

<>但是,我也成功地使用CXI-FILL构建了各种Excel,没有太大的困难,所以你也应该考虑尝试这个程序。

我还没有机会广泛尝试pynist、Nuitka或Cython,但它们似乎是非常有趣和创新的解决方案。如果您在使用第一组程序时遇到问题,不妨尝试这三种程序中的一种。由于它们的工作方式与Pyinstaller/cx_冻结式程序根本不同,因此它们可能在第一组失败的奇数边缘情况下成功

特别是,我认为pynist是一个很好的方法,可以避免整个代码分发问题:Mac和Linux已经有了Python的本机支持,而在Windows上安装Python可能是真正最干净的解决方案。(缺点是现在您需要担心针对多个版本的Python+安装库)

Nuitka和Cython(以我有限的经验)似乎工作得相当好。同样,我自己也没有对它们进行过广泛的测试,所以我的主要观察结果是,它们似乎需要更长的时间才能完成