用py2exe制作的可执行文件在Windows XP 32位上无法运行

6 投票
2 回答
7468 浏览
提问于 2025-04-16 19:44

我在一台64位的Windows 7电脑上用py2exe创建了一个可执行文件,并把这个程序分发出去。

但是在一台32位的Windows XP电脑上,这个程序却无法运行,表现出以下情况:

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

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

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

我能想到的唯一可能性就是操作系统或架构不兼容。我该怎么解决这个问题呢?

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

from distutils.core import setup
import py2exe

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

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

python setup.py py2exe

2 个回答

4

在Windows 7上生成可执行文件,然后在Windows XP上部署时,常常会遇到一个问题。

根据py2exe的教程,你需要包含MVC DLL。但是这个教程有点老旧,提供的脚本只会在一个目录里查找。以前,这个目录里有所有的DLL和清单文件,但现在只剩下DLL了。你需要指定另一个目录来放清单文件。如果不这样做,你就会遇到这样的错误:

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

如果你使用的是64位的Windows 7,你还需要微软的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”目录,里面包含了所有文件和依赖项。

7

我觉得你只需要在你的电脑上安装32位的Python和32位的py2exe就可以了……可以参考这个链接:64位的Python能创建32位的Windows可执行文件吗

撰写回答