7

我正在使用 py2exe 将我的脚本编译成一个 exe 文件以在 Windows 上运行,但我遇到了基于我的操作系统的错误,即 Window 7 x64。我正在使用以下命令在 cmd 中运行以下脚本execmaker.py py2exe

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文件所在的文件并在 cmd ( ) 中运行它时,我收到一条错误消息,内容如下: ,我认为这意味着它不会捆绑文件,因为我的操作系统是 64-少量。我认为这可能是一个问题,因为我安装了 64 位 python,但是当我卸载它时,我收到了错误execmaker.pyMy_Script.pyexecmaker.py py2exeerror: bundle-files 1 is not yet supported on win64DLL load failed: %1 is not a valid Win32 application.

DLL 加载错误是由在 64 位 Windows 上运行 32 位 python 引起的。所以基本上,它不适用于 32 位或 64 位 python,因为我运行的是 64 位 Windows。是否有解决方法,或者我是否需要安装 python 和我在 32 位机器上使用的所有模块来进行编译?

感谢您的帮助,感谢您在这个很长的问题上与我相处。

编辑 - 解决方案:我做了更多的研究,但一无所获。目前,除非用更有效的方法回答这个问题,否则我想在分区上或通过 Parallels 安装 32 位操作系统(我就是这样做的)就足够了。

4

5 回答 5

5

我想现在对你来说已经太晚了,但是对于下一个被困在这条船上的灵魂,在我看来,更有效的方法是从 oracle 免费安装 virtualbox (vb),然后在其上安装你的 32 位操作系统。这样您就不必对硬盘进行分区或其他什么,并且您可以像卸载任何其他程序一样毫无风险地卸载 vb。

另一种选择是尝试使用 pyinstaller。我只用它来为 linux 系统制作可执行文件,但我认为你也可以在 windows 上使用它。

于 2013-05-17T04:25:17.793 回答
4

我遇到了与 OP 类似的问题。在 64 位 Windows 7 Python2.7 环境中与 Py2exe 捆绑的 Python 应用程序,在 32 位 W7 下运行良好一段时间。2013 年 8 月上旬,它仍然有效。2013 年 11 月下旬,发现由于版本冲突而停止工作。我最好的猜测是,这些日期之间的 Windows 更新导致了更严格的版本检查。

我在旧的 32 位 Vista Python27 开发机器上将应用程序与 Py2Exe 重新捆绑在一起,它再次在 64 位和 32 位 Windows 下工作。

这个答案(从这里)对我最有帮助:

最简单的做法是确保您的 64 位 Windows 安装使用的是 32 位 Python 安装。py2exe 并没有真正构建任何东西;它只是将您的源文件与 Python 解释器捆绑在一起,因此只要该解释器是 32 位的,生成的 exe 就应该能够在任一平台上运行。

为了完整起见,这是错误消息:

“此版本的 [模块名称] 与您正在运行的 Windows 版本不兼容。请检查您计算机的系统信息以查看您是否需要 x86(32 位)或 x64(64 位)版本的程序,然后联系软件发行商。”

于 2013-12-06T15:16:34.017 回答
2

我也在 Windows 7 上运行该应用程序。如果可以,请卸载 python 2.7 x64,重新安装 python 2.7 x86,最后安装 py2exe。这为我解决了这个问题。

于 2016-07-06T13:40:27.823 回答
0

有一个“几乎”为我工作的在线 exe 生成器工具 (py2exe.net)。我正在使用 Python 2.7 编程,在尝试获取独立可执行文件时遇到了烦人的 windows 64 问题。

即使网站提到它是为 Python 3.x 程序构建的,我还是上传了我的程序只是为了尝试。

我的程序使用 pygame 调用 png 图像,所以我也在网站上导入了图像

我得到了一个几乎独立的可执行文件:图像导入显然不起作用,因为可执行文件只能在包含图像的文件夹中工作。但是,总比没有好。

于 2018-01-05T07:33:59.963 回答
-2

您的问题是 py2exe 是 32 位版本,在 x64 窗口下不起作用。如果是这种情况,您显然需要 64 位 py2exe,在 sf.net 上。

于 2013-08-13T13:01:54.383 回答