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

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

我在 python26中安装了 Python 2.6。

我已经创建了一个脚本,并将其保存在 C:\pythonscript

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

setup.py代码是

from distutils.core import setup
import py2exe


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

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

359356 次浏览

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

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

pyinstaller oldlogs.py

来自该工具的文档:

PyInstaller 分析 myscript.py 和:

  • 在与脚本相同的文件夹中写入 myscript.spec。
  • 如果脚本不存在,则在与脚本相同的文件夹中创建文件夹生成。
  • 在生成文件夹中写入一些日志文件和工作文件。
  • 如果脚本不存在,则在与脚本相同的文件夹中创建文件夹 dist。
  • 在 dist 文件夹中写入 myscript 可执行文件夹。

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

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

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

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

utils/Build.py oldlogs.spec

更多可以找到 给你

# -*- mode: python -*-


block_cipher = None


a = Analysis(['SCRIPT.py'],
pathex=[
'folder path',
'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_50c6cb8431e7428f',
'C:\\Windows\\WinSxS\\x86_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 )

由于其他 SO 答案链接到这个问题,值得注意的是,现在有另一个选项在 抗氧化剂

这是一个锈迹实用程序,它的工作方式与 pyinstaller 相同,但是有一些额外的功能详细的 给你,以总结其中的关键:

  • 默认情况下,所有软件包都是单个二进制文件,可以将模块零拷贝加载到内存中,相比之下,当使用 onefile模式时,pyinstaller 将它们提取到一个临时目录
  • 生成静态链接二进制文件的能力

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

总的来说,PyOxidzer 的使用要比 PyOxidizer 简单得多,后者通常要求配置文件有一定的复杂性,而且因为它是用 Rust 编写的,并且使用了 Python 世界中不太熟悉的配置文件格式,所以它比 Pythony 简单得多,但 PyOxidizer 做了一些更高级的工作,特别是如果你想生成单个二进制文件(这不是 pyinstaller 的默认设置)。