将一个 EXE 及其依赖项转换为一个独立的 EXE

Posted

技术标签:

【中文标题】将一个 EXE 及其依赖项转换为一个独立的 EXE【英文标题】:Convert an EXE and its dependencies into one stand-alone EXE 【发布时间】:2012-11-15 00:22:30 【问题描述】:

我正在使用 cx_Freeze 将 Python 程序编译成可执行文件,它工作得很好,但问题是它不会将程序编译成一个 EXE,而是将它们转换成一个 .exe 文件和一大堆.dll 文件,包括程序运行所必需的 python32.dll

有谁知道如何将所有这些文件打包成一个.exe 文件?我宁愿它是一个普通的 EXE 文件,而不仅仅是一个将 DLL 复制到临时目录以启动程序的文件。

编辑:这是对 Python 3 的参考

【问题讨论】:

cx_Freeze 还不支持。您可以制作安装程序,但不能制作独立的“只需运行此”exe 【参考方案1】:

您至少有两个选择:PyInstallerpy2exe

使用 py2exe,有​​一个名为 bundle_files 的选项,您可以设置:

3(默认):不捆绑。 2:捆绑除 Python 解释器之外的所有内容。 1:捆绑所有内容,包括 Python 解释器。

这是一个示例 setup.py

from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')

setup(
    options = 'py2exe': 'bundle_files': 1,
    windows = ['script': "single.py"],
    zipfile = None,
)

这种方法不需要将文件提取到临时位置。

【讨论】:

不幸的是,py2exe 仅适用于 python 2.x,而不适用于 python 3.x。但是,谢谢你的信息。我已经更新了问题以表明我需要 python 3 的答案。【参考方案2】:

在将 python 脚本编译成一个文件时,Pyinstaller 通常是更简单的选择。

pyinstaller.py program.py --onefile

在此处查看文档:http://www.pyinstaller.org/export/v2.0/project/doc/Manual.html?format=raw

【讨论】:

我检查了它,我不相信这也适用于 Python 3。不过信息很好。【参考方案3】:

您尝试过 innosetup 吗?它可以从 cxfreeze 的输出创建安装程序文件。可能有一个选项可以将所有内容捆绑到一个文件中。

【讨论】:

以上是关于将一个 EXE 及其依赖项转换为一个独立的 EXE的主要内容,如果未能解决你的问题,请参考以下文章

PyInstaller将python脚本打包成exe可执行程序

将MATLAB程序发布为独立的可执行的程序包.exe

如何将C#代码转换成软件

C++的QT项目打包成独立可执行和发布的exe文件

C++的QT项目打包成独立可执行和发布的exe文件

C++的QT项目打包成独立可执行和发布的exe文件