我在XP上使用python 2.6。我刚刚安装了py2exe,并且可以从hello.py成功创建一个简单的hello.exe。但是,当我尝试在实际程序上使用py2exe时,py2exe会生成一些信息消息,但无法在dist文件夹中生成任何内容。
我的setup.py看起来像这样:
from distutils.core import setup import py2exe setup(console=['ServerManager.py'])
和py2exe输出看起来像这样:
python setup.py py2exe running py2exe creating C:\DevSource\Scripts\ServerManager\build creating C:\DevSource\Scripts\ServerManager\build\bdist.win32 ... ... creating C:\DevSource\Scripts\ServerManager\dist *** searching for required modules *** *** parsing results *** creating python loader for extension 'wx._misc_' (C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\_misc_.pyd -> wx._misc_.pyd) creating python loader for extension 'lxml.etree' (C:\Python26\lib\site-packages\lxml\etree.pyd -> lxml.etree.pyd) ... ... creating python loader for extension 'bz2' (C:\Python26\DLLs\bz2.pyd -> bz2.pyd) *** finding dlls needed ***
py2exe似乎已经找到了我的所有导入文件(尽管看到win32时我感到有些惊讶,因为我没有明确导入它)。此外,我的程序使用以下命令非常愉快地启动:
python ServerManager.py
显然,我在做一些根本上错误的事情,但是在没有py2exe的任何错误消息的情况下,我也不知道该怎么办。
我发现,如果我注释掉使用wxPython的程序部分,则py2exe可以正常工作。另外,当我在下载所附带的“简单”示例中使用py2exe时(即在Python26 \ Lib \ site-packages \ py2exe \ samples \ simple中),我得到以下错误消息:
*** finding dlls needed *** error: MSVCP90.dll: No such file or directory
因此,关于wxPython的某些事情使py2exe认为我需要Visual Studio 2008 DLL。我没有VS2008,但是我的程序作为Python模块目录完全可以正常工作。我在网上找到了MSVCP90.DLL的副本,并将其安装在Python26 / DLL中,并且py2exe现在可以正常工作。
我仍然不了解这种依赖关系的来源,因为我可以在没有py2exe的情况下完美地运行我的代码。同样令人讨厌的是py2exe没有像test_wx.py示例那样给我错误信息。
进一步更新:当我尝试在另一台PC上运行py2exe的输出时,我发现它需要安装MSVCR90.DLL。因此,如果您的目标PC尚未安装Visual C ++ 2008,建议您下载并安装Microsoft Visual C ++ 2008 Redistributable Package。