当前位置:  开发笔记 > 编程语言 > 正文

py2exe - 生成单个可执行文件

如何解决《py2exe-生成单个可执行文件》经验,为你挑选了3个好方法。

我以为我听说py2exe能够做到这一点,但我从未弄明白.有没有人成功完成这个?我可以看到你的setup.py文件,以及你使用的命令行选项吗?

基本上我正在考虑给它一个可执行文件,它可以像解压缩/ temp和运行一样.



1> minty..:

使用py2exe执行此操作的方法是使用setup.py文件中的bundle_files选项.对于单个文件,您需要将其设置bundle_files为1,设置compressed为True,并将zipfile选项设置为None.这样它就可以创建一个压缩文件以便于分发.

以下是直接从py2exe站点引用的bundle_file选项的更完整描述*

使用"bundle_files"和"zipfile"

创建单文件可执行文件的一种更简单(也更好)的方法是将bundle_files设置为1或2,并将zipfile设置为None.此方法不需要将文件解压缩到临时位置,这样可以更快地启动程序.

bundle_files的有效值为:

3(默认)不捆绑

2捆绑除Python解释器之外的所有内容

1捆绑所有东西,包括Python解释器

如果zipfile设置为None,则文件将在可执行文件中而不是library.zip中包.

这是一个示例setup.py:

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

sys.argv.append('py2exe')

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


请注意amd64不支持bundle_files 1(Python 2.6至少为py2exe 0.6.9)
当然,如果您只想要未捆绑的解释器,请为bundle_files选项选择2.祝好运!
对于Python 2.7仍然如此.
@Pat:运行py2exe的调用是"python setup.py py2exe".通过在末尾自动附加"py2exe",它只意味着您不必在命令行输入它.
不是一个可执行文件,因为您需要[安装Microsoft Visual C运行时DLL](http://www.py2exe.org/index.cgi/Tutorial#A5.ProvidingtheMicrosoftVisualCruntimeDLL).
我有一个控制台应用程序,我希望将其作为单个可执行文件.我不得不用`console = ['single.py']`替换`windows = [{'script':"single.py"}]`所以双击该文件将在Windows的CMD窗口中打开.
@ Joril评论6年后仍然 - "错误:win64上尚未支持bundle-files 1"

2> dF...:

PyInstaller将创建一个没有依赖项的单个.exe文件; 使用该--onefile选项.它通过将所有需要的共享库包装到可执行文件中,并在运行之前解压缩它们来完成此操作,就像您描述的那样(编辑:py2exe也有此功能,请参阅minty的答案)

我使用svn中的PyInstaller版本,因为最新版本(1.3)有点过时了.对于一个依赖于PyQt,PyQwt,numpy,scipy等等的应用来说,它的效果非常好.


当你使用鸡蛋时,我发现py2exe比pyInstaller好多了.薄荷的答案是解决方案.
我现在使用的是1.5.1版本,它适用于Python 2.7.2.
客观观点:我看不出这是一个可以接受的答案,因为它没有解决使用py2exe创建单个exe文件的问题。(不过,这当然是一个有用的答案。)

3> Philippe F..:

正如另一张海报提到的那样,py2exe会生成一个可执行文件+一些要加载的库.您还可以将一些数据添加到您的程序中.

下一步是使用安装程序将所有这些打包成一个易于使用的可安装/不可操作程序.

我已经使用了InnoSetup(http://www.jrsoftware.org/isinfo.php)多年的喜悦和商业节目,所以我衷心推荐它.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有