py2exe strangley使用IEHtmlWindow挂起wxPython程序

时间:2011-10-21 11:14:16

标签: python wxpython py2exe comtypes

我在win XP SP3机器上有一个带有wxPython 2.8.12和comtypes 0.6.2依赖项的Python 2.7.2程序。我使用py2exe生成windows distributables,具有以下设置:

setup(
    options = {
        "py2exe": {
                   "packages": ['wx.lib.pubsub']
                  }
    },
   windows = [
       {
           "script" : "entry.py",
       }
   ],
   data_files=[("bitmaps", ["../resources/icons/app_big.png",
                            "../resources/icons/app_medium.png",
                            "../resources/icons/app_small.png",
                            "../resources/icons/app_small_new.png",
                            "../resources/icons/app_small_bad.png",
                            "../resources/icons/cross_hover.png",
                            "../resources/icons/cross.png",
                            "../resources/icons/delete.png",
                            "../resources/icons/refresh.png",])]
)

我也在使用IEHtmlWindow控件。

发生的事情是每当我在Python控制台发出命令时,py2exe运行一秒钟,输出如下:

运行py2exe *搜索所需的模块*

然后似乎无限期地挂起,直到我按下Ctr + z。

我已将问题跟踪到导入:

来自wx.lib.iewin的

导入IEHtmlWindow

这似乎导致了这个问题。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

解决了,问题是comtypes生成了一个非常大的模块文件,它花了太多时间来解析py2exe:

comtypes.gen._3050F1C5_98B5_11CF_BB82_00AA00BDCE0B_0_4_0

解决方法是修补py2exe源代码(版本0.6.9),正如Erez Bibi在其帖子中指出的那样:

http://groups.google.com/group/wxPython-users/browse_thread/thread/52deb8a0bc1cdc5e

现在使用设置文件

options={
             "py2exe": {
                        'packages': ['wx.lib.pubsub'],
                        'includes': ['comtypes.gen._3050F1C5_98B5_11CF_BB82_00AA00BDCE0B_0_4_0'],
                        'skip_scan': ['comtypes.gen._3050F1C5_98B5_11CF_BB82_00AA00BDCE0B_0_4_0']
                        }
             },

一切似乎都再次发挥作用。

答案 1 :(得分:0)

实际上有两个版本的IEHtmlWindow。您可以尝试导入另一个:

from wx.lib.iewin_old import IEHtmlWindow

看看是否有效。如果确实如此,真棒。如果没有,那么你应该交叉发布到py2exe邮件列表和/或wxPython邮件列表。