将一个 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】:您至少有两个选择:PyInstaller 或 py2exe。
使用 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的主要内容,如果未能解决你的问题,请参考以下文章