【问题标题】:Issue compiling using py2exe on Windows 7 x64在 Windows 7 x64 上使用 py2exe 编译问题
【发布时间】: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。当我cdexecmaker.pyMy_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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    我在旧的 32 位 Vista Python27 开发机器上使用 Py2Exe 重新捆绑了该应用程序,它再次在 64 位和 32 位 Windows 下运行。

    这个答案(来自here)对我最有帮助:

    不过,最简单的事情就是制作 确保您的 64 位 Windows 安装使用的是 32 位 Python 安装。 py2exe 并没有真正构建任何东西;它只是捆绑 你的源文件使用 Python 解释器,只要 解释器是 32 位的,生成的 exe 应该能够在其上运行 任一平台。

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

          【解决方案5】:

          您的问题是 py2exe 是 32 位版本,无法在 x64 窗口下运行。 如果是这种情况,您显然需要 sf.net 上的 64 位 py2exe 和 here it is

          【讨论】:

          • 我相信我已经在运行 64 位 py2exe,但可以肯定的是,我下载了该文件并运行了它。什么都没有解决。我仍然收到与以前相同的错误消息(与原始发帖人询问的相同。)
          猜你喜欢
          • 2011-03-26
          • 1970-01-01
          • 2010-11-29
          • 2011-07-02
          • 2013-05-26
          • 2017-12-29
          • 1970-01-01
          • 2010-11-20
          • 2010-12-06
          相关资源
          最近更新 更多