【发布时间】:2013-05-16 21:33:29
【问题描述】:
我正在使用 py2exe 将我的脚本编译成一个 exe 文件以在 Windows 上运行,但我遇到了基于我的操作系统的错误,即 Window 7 x64。我正在使用execmaker.py py2exe在cmd中运行以下脚本:
from distutils.core import setup
import py2exe
includes = []
excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
'Tkconstants', 'Tkinter']
packages = []
dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
'tk84.dll']
setup(
options = {"py2exe": {"compressed": 2,
"optimize": 2,
"includes": includes,
"excludes": excludes,
"packages": packages,
"dll_excludes": dll_excludes,
"bundle_files": 1,
"dist_dir": "dist",
"xref": False,
"skip_archive": False,
"ascii": False,
"custom_boot_script": '',
}
},
windows=['My_Script.py'] #this is the name of the script I'm compiling to exe
)
我要编译成 exe 的实际脚本并不重要,因为当我使用 bundle_files: 3, 编译它时它工作得非常好,它不会捆绑任何文件并将大约 200 个 .pyo 文件留在文件夹中。
所以让我们进入问题的中心:因为我使用的是 Win 7 x64,所以我安装了 64 位版本的 Python 2.7.5。当我cd 到 execmaker.py 和 My_Script.py 文件所在的文件并在 cmd (execmaker.py py2exe) 中运行它时,我收到一条错误消息,内容如下:
error: bundle-files 1 is not yet supported on win64,我认为它不会捆绑文件,因为我的操作系统是 64 位的。我以为这可能是因为我安装了 64 位 python 而产生的问题,但是当我卸载它时,我收到了错误DLL load failed: %1 is not a valid Win32 application.
DLL 加载错误是由在 64 位 Windows 上运行 32 位 python 引起的。所以基本上,它不适用于 32 位或 64 位 python,因为我运行的是 64 位 Windows。是否有解决方法,或者我需要安装 python 和我在 32 位机器上使用的所有模块来进行编译?
感谢您的帮助,感谢您耐心解答这个很长的问题。
编辑 - 解决方案:我做了更多研究,但一无所获。目前,除非用更有效的方法回答这个问题,否则我想在分区上或通过 Parallels(我就是这样做的)安装 32 位操作系统就足够了。
【问题讨论】:
-
我宁愿有一个经过深思熟虑的很长的问题,也不愿在这里出现的其他一些渣滓(“我的 400 行函数有一个错误”而不说明错误,并发布一个完全不相关的问题一段代码)。我只希望我能帮助你:-)
-
我很欣赏这种情绪!我之前的大部分问题都很糟糕,所以听到这个问题可能不那么糟糕,真是太棒了。
-
尝试运行
python execmaker.py py2exe。我发现有时(其他 python 脚本的)结果在显式调用解释器和让 Window 的文件关联处理它之间会有所不同。 -
我遇到了同样的问题,并通过在 windows 上重新安装 32 位 python 和 32 位 py2exe 来修复它。
标签: python compilation 64-bit py2exe