从 Python 项目创建单个可执行文件[关闭]

2024-11-28 08:37:00
admin
原创
203
摘要:问题描述:我想从我的 Python 项目创建一个可执行文件。用户应该能够下载并运行它,而无需安装 Python。如果我只是分发一个包,我可以使用 pip、wheel 和 PyPI 来构建和分发它,但这要求用户拥有 Python 并知道如何安装包。我可以使用什么来从 Python 项目构建一个独立的可执行文件?...

问题描述:

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


解决方案 1:

有几种不同的方法可以做到这一点。


第一种(也是最常见的)方法是使用“冻结”式程序。这些程序通过将 Python 和你的程序捆绑在一起来工作,本质上将它们组合成一个可执行文件:

  • Py安装程序:

网站||仓库|| PyPi

支持 Windows、Mac 和 Linux 上的 Python 3.7 - 3.10。

  • cx_冻结:

网站||仓库|| PyPi

支持 Windows、Mac 和 Linux 上的 Python 3.6 - 3.10。

  • py2exe:

网站||仓库|| PyPi

仅支持 Windows 上的 Python 3.7 - 3.10。

  • py2app:

网站||仓库|| PyPi

仅支持 Mac 上的 Python 3.6 - 3.10。

需要牢记的是,这些类型的程序通常只会为您运行的操作系统生成一个 exe。例如,在 Windows 中运行 Pyinstaller 将生成一个 Windows exe,但在 Linux 中运行 Pyinstaller 将生成一个 Linux exe。如果您想为多个操作系统生成一个 exe,则必须考虑使用虚拟机或 Wine 之类的东西。


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

  • pynsist:

网站||仓库|| PyPi

Pynsist 将为您的程序创建一个 Windows 安装程序,它将直接在用户的计算机上安装 Python,而不是将其与您的代码捆绑在一起,并创建链接到您的 Python 脚本的快捷方式。

pynsist 工具本身需要 Python 3.5+ 才能运行,但支持将任何版本的 Python 与您的程序捆绑在一起。

Pynsist 只会创建 Windows 安装程序,但可以从 Windows、Mac 和 Linux 运行。有关更多详细信息,请参阅其常见问题解答。

  • 努伊特卡:

网站|| Repo(Github 镜像) || PyPi

Nuitka 会直接编译你的 Python 代码并生成一个 exe(与其他仅包含 Python 的项目不同),以尝试加快你的代码速度。作为副作用,你还会得到一个可以分发的方便的 exe。请注意,你的系统上需要有C++ 编译器。

在 Windows、Mac 和 Linux 上支持 Python 2.6 - 2.7 和 Python 3.3 - 3.10。

  • cython:

网站||仓库|| PyPi

Cython 与 Nuitka 类似,都是 Python 编译器。但是,它不会直接编译代码,而是将其编译为 C。然后,您可以将该 C 代码转换为 exe。您需要在系统上安装 C 编译器。

在 Windows、Mac 和 Linux 上支持 Python 2.7 和 Python 3.3 - 3.11。


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

不过,我也成功地使用 cx_Freeze 构建了各种 exe,而没有太多困难,所以您也应该考虑尝试该程序。

我还没有机会广泛尝试 pynist、Nuitka 或 Cython,但它们似乎是相当有趣和创新的解决方案。如果您在使用第一组程序时遇到麻烦,可能值得尝试这三个程序之一。由于它们的工作方式与 Pyinstaller/cx_freeze 风格的程序根本不同,它们可能会在第一组程序失败的那些奇怪的边缘情况下取得成功。

具体来说,我认为 pynist 是完全避免分发代码问题的好方法:Mac 和 Linux 已经对 Python 提供本机支持,在 Windows 上安装 Python 可能确实是最干净的解决方案。(缺点是现在您需要担心针对多个版本的 Python + 安装库)。

Nuitka 和 Cython(就我有限的经验而言)似乎运行得相当好。同样,我自己还没有对它们进行过广泛的测试,因此我的主要观察是它们似乎比“冻结”式程序花费更长的时间来生成 exe。


尽管如此,将 Python 程序转换为可执行文件不一定是分发代码的唯一方法。要了解有关其他可用选项的更多信息,请参阅以下链接:

解决方案 2:

截至 2022 年 7 月,pyinstaller正在积极开发中。您可以在 GitHub 上查看最新更改。它支持 Windows、Linux 和 MacOS;32 位和 64 位。它支持 Python 版本 2.6、2.7 和 3.3+。


使用 pip 安装 PyInstaller:

pip install pyinstaller

转到程序的目录并运行:

pyinstaller -F script.py

在 dist 文件夹中找到 .exe。添加-F参数会生成一个独立的 .exe。

解决方案 3:

auto-py-to-exe是 PyInstaller 的 GUI。

自动将 py 转为 exe

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2556  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1551  
  知识管理在企业发展中扮演着至关重要的角色,它能够帮助企业积累经验、提升创新能力并增强竞争力。PLM(产品生命周期管理)系统作为企业管理产品全生命周期的重要工具,其知识管理功能对于企业实现经验沉淀与复用具有不可忽视的作用。通过有效的知识管理机制,企业可以在PLM系统中更好地整合和利用产品相关的知识,从而优化产品开发流程、...
PLM项目管理软件   0  
  产品生命周期管理(PLM)和企业资源计划(ERP)是现代企业管理中至关重要的两个系统。它们在企业的运营和发展中发挥着不同但又相互关联的作用。对于企业管理者和相关从业者来说,清晰地理解PLM与ERP的核心区别,有助于更精准地运用这两个系统,提升企业的管理效率和竞争力。接下来,我们将深入剖析这两个系统的核心区别。定义与概念...
plm项目管理系统是什么   0  
  敏捷项目管理与产品生命周期管理(PLM)的融合以及六西格玛工具链的运用,正逐渐成为企业提升迭代效率、增强竞争力的关键策略。在快速变化的商业环境中,如何将敏捷项目管理的灵活性与PLM的全生命周期管控相结合,并借助六西格玛工具优化流程,是众多企业面临的重要课题。敏捷项目管理与PLM的基础认知敏捷项目管理强调灵活性、快速响应...
plm软件排行榜   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用