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

时间:2012-11-15 00:22:31

标签: python compilation exe cx-freeze

我正在使用cx_Freeze将Python程序编译成可执行文件,它工作正常,但问题是它没有将程序编译成一个EXE,它将它们转换为.exe文件和整个包含.dll的{​​{1}}个文件,这些文件是程序运行所必需的。

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

编辑:这是参考Python 3

3 个答案:

答案 0 :(得分: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,
)

此方法不需要将文件解压缩到临时位置。

答案 1 :(得分:1)

在将python脚本编译到一个文件中时,Pyinstaller通常是更容易的选择。

pyinstaller.py program.py --onefile

请参阅此处的文档:http://www.pyinstaller.org/export/v2.0/project/doc/Manual.html?format=raw

答案 2 :(得分:0)

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