如何将 Python 脚本编译为二进制可执行文件

2025-03-04 08:24:00
admin
原创
76
摘要:问题描述:我需要将 Python 脚本转换为 Windows 可执行文件。我已经安装了 Python 2.6 python26。我创建了一个脚本并将其保存在C:pythonscript。此文件夹中有两个文件Setup.py和oldlogs.py(此文件需要转换)setup.py代码是from distutil...

问题描述:

我需要将 Python 脚本转换为 Windows 可执行文件。

我已经安装了 Python 2.6 python26

我创建了一个脚本并将其保存在C:pythonscript。此文件夹中有两个文件

Setup.pyoldlogs.py(此文件需要转换)

setup.py代码是

from distutils.core import setup
import py2exe

setup(console=['oldlogs.py'])

如何将 oldlogs.py 转换为 exe 文件?


解决方案 1:

或者使用PyInstaller作为py2exe的替代品。这是一个很好的起点。PyInstaller 还允许您为 Linux 和 Mac 创建可执行文件...

以下是如何轻松使用 PyInstaller 解决当前问题的方法:

pyinstaller oldlogs.py

来自该工具的文档:

PyInstaller 分析 myscript.py 并:

  • 将 myscript.spec 写入与脚本相同的文件夹中。

  • 如果不存在,则在与脚本相同的文件夹中创建一个文件夹。

  • 在构建文件夹中写入一些日志文件和工作文件。

  • 如果不存在文件夹 dist,则在与脚本相同的文件夹中创建一个文件夹。

  • 将 myscript 可执行文件夹写入 dist 文件夹。

在 dist 文件夹中,您可以找到分发给用户的捆绑应用程序。

解决方案 2:

我推荐PyInstaller,可以使用以下命令将简单的 python 脚本转换为 exe:

utils/Makespec.py [--onefile] oldlogs.py

它将创建一个 yourprogram.spec 文件,该文件是用于构建最终 exe 的配置。下一个命令将从配置文件构建 exe:

utils/Build.py oldlogs.spec

更多内容请点击此处

解决方案 3:

由于其他 SO 答案链接到这个问题,因此值得注意的是PyOxidizer现在还有另一种选择。

它是一个 rust 实用程序,其工作方式与 pyinstaller 相同,但是它还有一些附加功能,详见这里,总结一下主要功能:

  • 默认情况下,所有软件包都采用单一二进制文件,能够将模块零拷贝加载到内存中,而使用 pyinstalleronefile模式时,则需要将它们提取到临时目录中

  • 能够生成静态链接二进制文件

(另一个优点是,如果你在比目标系统更新的 glibc 版本上创建二进制文件,pyoxidizer它似乎不会受到pyinstaller 可能出现的问题的影响)。GLIBC_X.XX not found

总体而言,pyinstaller 比 PyOxidizer 更易于使用,后者通常需要在配置文件中添加一些复杂性,而且由于它是用 Rust 编写的,并且使用了 Python 世界中不太熟悉的配置文件格式,因此它的 Python 风格不太明显,但 PyOxidizer 可以做一些更高级的事情,特别是当你希望生成单个二进制文件时(这不是 pyinstaller 的默认设置)。

解决方案 4:

您可以使用 pyinstaller 来发布python脚本的单个二进制文件。

pyinstaller script.py --onefile

它发布包含单个二进制可执行文件的 dist 文件夹。

解决方案 5:

可以使用nuitka python 包,可以方便地从 PyPi 下载到 python 环境中:

pip install nuitka

注意:该软件包支持python 2.6-2.7,以及大多数python 3版本:3.4-3.12。

使用 Nuitka

<the_right_python> -m nuitka [options] <file_to_compile>

免责声明:Nuitka 创建可在任何具有相同操作系统的机器上运行的独立可执行文件(例如,Windows 到 Windows)。但是,在一个操作系统(例如 Windows)上编译的可执行文件将无法在另一个操作系统(例如 macOS)上运行。不支持针对不同操作系统进行交叉编译。

在运行时提供的众多选项中,最值得注意的是以下两个选项:

  • --standalone:允许可执行文件在不依赖其他机器的 Python 安装的情况下进行分发。这将创建一个新的分发文件夹,该文件夹必须与其他机器上的可执行文件一起发布;因为它包含源 Python 程序依赖项(例如 .dll 和 .pyd 文件)的高效、编译形式,因此该文件夹在生产设置中可能会变得非常大。

  • --onefile:创建一个分发文件夹,但会创建并使用压缩的可执行文件。如文档中所述:

--onefile 确实会创建一个文件,但在转向它之前,请确保独立文件能够正常工作,因为它只会使调试更加困难,例如在缺少数据文件的情况下。

项目选项:下面的示例展示了一种在正在编译的 Python 脚本中自定义运行时选项的巧妙方法。

# Compilation mode, support OS-specific options
# nuitka-project-if: {OS} in ("Windows", "Linux", "Darwin", "FreeBSD"):
#    nuitka-project: --onefile
# nuitka-project-else:
#    nuitka-project: --standalone
# The PySide6 plugin covers qt-plugins
# nuitka-project: --enable-plugin=pyside6
# nuitka-project: --include-qt-plugins=qml

项目选项中支持的一些变量包括:
IT科技

解决方案 6:

# -*- mode: python -*-

block_cipher = None

a = Analysis(['SCRIPT.py'],
             pathex=[
                 'folder path',
                 'C:\\Windows\\WinSxS\†_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_50c6cb8431e7428f',
                 'C:\\Windows\\WinSxS\†_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_c4f50889467f081d'
             ],
             binaries=[(''C:\\Users\\chromedriver.exe'')],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='NAME OF YOUR EXE',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3407  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2228  
  建设工程项目的成本与进度控制是项目成功的关键要素。有效的成本与进度控制能够确保项目在预算范围内按时交付,提高项目的经济效益和社会效益。然而,在实际项目中,成本超支和进度延误的情况屡见不鲜,给项目带来了诸多风险和挑战。因此,深入探讨如何有效控制建设工程项目的成本与进度具有重要的现实意义。成本控制的关键策略成本控制是建设工...
工程项目管理主要内容   2  
  项目团队建设对于项目的成功至关重要。一个高效协作的项目团队能够更顺畅地推进各项任务,应对各种挑战,达成项目目标。理解项目团队建设的核心要素并制定有效的策略,是项目经理及团队领导者的关键职责。明确的目标与愿景明确的目标是项目团队前进的方向标。团队成员需要清楚地知道项目要达成什么结果,以及这个结果对于组织和相关利益者的意义...
项目管理的核心要素   2  
  跨文化项目由于涉及不同文化背景的团队成员、利益相关者,其复杂性和挑战性远超一般项目。在这样的项目中,有效运用项目管理的十大知识领域,对于项目的成功至关重要。这十大知识领域涵盖了从项目启动到结束的各个关键环节,为跨文化项目的顺利推进提供了全面的指导框架。接下来,我们将深入探讨每个知识领域在跨文化项目中的具体实践要点。项目...
项目管理师   2  
热门文章
项目管理软件有哪些?
曾咪二维码

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

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

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用