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

2024-11-28 08:37:00
admin
原创
183
摘要:问题描述:我想从我的 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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1579  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1355  
  信创产品在政府采购中的占比分析随着信息技术的飞速发展以及国家对信息安全重视程度的不断提高,信创产业应运而生并迅速崛起。信创,即信息技术应用创新,旨在实现信息技术领域的自主可控,减少对国外技术的依赖,保障国家信息安全。政府采购作为推动信创产业发展的重要力量,其对信创产品的采购占比情况备受关注。这不仅关系到信创产业的发展前...
信创和国产化的区别   8  
  信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,摆脱对国外技术的依赖。近年来,国货国用信创发展势头迅猛,在诸多领域取得了显著成果。这一发展趋势对科技创新产生了深远的推动作用,不仅提升了我国在信息技术领域的自主创新能力,还为经济社会的数字化转型提供了坚实支撑。信创推动核心技术突破信创产业的发展促使企业和科研...
信创工作   9  
  信创技术,即信息技术应用创新产业,旨在实现信息技术领域的自主可控与安全可靠。近年来,信创技术发展迅猛,对中小企业产生了深远的影响,带来了诸多不可忽视的价值。在数字化转型的浪潮中,中小企业面临着激烈的市场竞争和复杂多变的环境,信创技术的出现为它们提供了新的发展机遇和支撑。信创技术对中小企业的影响技术架构变革信创技术促使中...
信创国产化   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用