我在64位Windows 7计算机上使用py2exe创建了一个可执行文件,并分发了该程序。
在Windows xp 32位机器上,程序拒绝运行,表现出以下行为:
弹出窗口说:program.exe是 不是一个有效的win32应用程序。
命令提示符窗口显示“access 拒绝“
我检查了权限,用户具有完全控制权并完全拥有该文件及其父目录。所以这不是问题。
我能想象的唯一可行的可能性是操作系统/架构不兼容。我该如何解决这个问题?
我的setup.py文件用于生成可执行文件:
from distutils.core import setup
import py2exe
setup(console=['xerxes2excel.py'])
我运行以下命令来生成exe:
python setup.py py2exe
答案 0 :(得分:7)
我认为你只需要在你的机器上安装32位python和32位py2exe ....见Can 64-bit python create 32-bit Windows executables
答案 1 :(得分:4)
在Windows 7上生成可执行文件并在Windows XP上部署时的常见问题。
根据py2exe教程,您需要包含MVC DLL。但是教程很旧,脚本只在一个目录中进行搜索。之前,该目录包含所有DLL和清单,但现在它只包含DLL。您需要为清单文件指定另一个目录。如果你不这样做,你会遇到这种错误:
this application has failed to start because the application configuration is incorrect
如果您使用的是Windows 7 64位,则需要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”目录。