一尘不染

py2exe无法生成可执行文件

python

我在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的任何错误消息的情况下,我也不知道该怎么办。


阅读 165

收藏
2020-12-20

共1个答案

一尘不染

我发现,如果我注释掉使用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

2020-12-20