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

2024-11-28 08:37:00
admin
原创
204
摘要:问题描述:我想从我的 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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2559  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1552  
  《动物森友会》(简称“动森”)是一款充满趣味与创意的游戏,在游戏中,玩家可以自由地与可爱的动物角色互动,打造属于自己的理想小岛家园。而调整服务器时间在动森游戏体验中扮演着重要角色,它能让玩家更灵活地安排游戏节奏,解锁更多游戏内容。接下来,我们就深入探讨一下动森如何调服务器时间。了解动森时间机制在动森中,游戏内的时间与现...
  0  
  支付服务器租金是企业在运营过程中常见的一项支出,正确的账务处理对于准确反映企业的财务状况和经营成果至关重要。这不仅涉及到财务数据的准确性,还关系到税务申报等多个方面。以下将详细探讨支付服务器租金该如何进行账务处理。明确服务器租金的性质服务器租金属于企业为获取一定时期内服务器使用权利而支付的费用。从经济实质来看,它类似于...
  1  
  在云计算的广泛应用场景中,阿里云服务器以其高效、稳定等诸多优势受到众多用户的青睐。然而,随着业务的发展和调整,可能会出现服务器不再使用且已过期的情况。此时,合理地删除过期服务器不仅能够避免不必要的费用产生,还能有效管理资源,提升整体资源利用效率。接下来,我们将详细探讨阿里云过期服务器的删除流程及相关要点。了解阿里云服务...
  3  
热门文章
项目管理软件有哪些?
曾咪二维码

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

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

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用