【问题标题】:executable made with py2exe doesn't run on windows xp 32bit用 py2exe 制作的可执行文件不能在 windows xp 32bit 上运行
【发布时间】:2011-09-16 17:54:00
【问题描述】:

我在 64 位 windows 7 机器上用 py2exe 创建了一个可执行文件,并分发了该程序。

在 windows xp 32bit 机器上,程序拒绝运行,表现出以下行为:

一个弹出窗口说:program.exe 是 不是有效的 win32 应用程序。

命令提示符窗口显示“访问 拒绝”

我检查了权限,用户对文件及其父目录拥有完全控制权和完全所有权。所以这不是问题。

我可以想象的唯一可行的可能性是操作系统/架构不兼容。我应该如何解决这个问题?

我用来生成可执行文件的 setup.py 文件:

from distutils.core import setup
import py2exe

setup(console=['xerxes2excel.py'])

我运行以下命令来生成 exe:

python setup.py py2exe

【问题讨论】:

  • 尝试使用 32 位机器创建可执行文件
  • 可以说您可能创建了一个不能在 32 位处理器上运行的 64 位可执行文件吗?
  • @jcomeau_ictx,这是我的假设。有没有办法在 64 位机器上创建 32 位可执行文件?通过某种模拟魔法?
  • 可能有,但如果您将问题更改为刚才问我的问题,您将更有可能得到答案。我个人没用过py2exe
  • Windows 7 - 以兼容性运行 py2execmd 会话。也许这会有所帮助

标签: python windows architecture py2exe


【解决方案1】:

我认为你只需要在你的机器上安装 32 位 python 和 32 位 py2exe 就可以了....见Can 64-bit python create 32-bit Windows executables

【讨论】:

  • 这样做并且成功了,结果证明python解释器是唯一存在兼容性问题的东西。
【解决方案2】:

在 Windows 7 上生成可执行文件并在 Windows XP 上部署时的常见问题。

根据 py2exe 教程,您需要包含 MVC DLL。但是教程很旧,并且脚本只在一个目录中搜索。以前,该目录包含所有 DLL 和清单,但现在它只包含 DLL。您需要为清单文件指定另一个目录。如果不这样做,就会出现这种错误:

this application has failed to start because the application configuration is incorrect

如果您使用的是 64 位 Windows 7,则需要 Microsoft Visual C 运行时 DLL。不要忘记在 Windows 7 中不在同一目录中的清单。您需要像这样调整脚本:

data_files = [("VC90", glob(r'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91\*.*')),
            ("VC90", glob(r'C:\Windows\winsxs\Manifests\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91.manifest'))
]
setup(
    data_files=data_files,
    console = [{'script': "C:\test\my_program.py"}],
    zipfile = None,
)

现在您可以部署包含所有文件和依赖项的“dist”目录。

【讨论】:

  • 你应该包括 from glob import glob
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多