用py2exe制作的可执行文件在Windows XP 32位上无法运行
我在一台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可执行文件吗