如果使用py2exe

时间:2016-02-08 21:21:46

标签: python com py2exe

我正在尝试编译一个使用COM与MS Word交互的Python 3.3程序。 该程序的解释版本运行正常,并显示MS字。

word =win32com.client.gencache.EnsureDispatch(u"Word.Application")
doc = word.Documents.Add()
word.Visible = True

运行makepy for Microsoft Word 14.0对象库(8.5)为我提供了参考密钥00020905-0000-0000-C000-000000000046。

现在用py2exe编译程序时,编译后的程序会死:

Traceback (most recent call last):   File "main.py", line 17, in <module>
File "C:\Python 3.3.5\lib\site-packages\win32com\client\gencache.py", line 544, in EnsureDispatch
    disp_class = CLSIDToClass.GetClass(str(disp_clsid))
File "C:\Python 3.3.5\lib\site-packages\win32com\client\CLSIDToClass.py", line 46, in GetClass
    return mapCLSIDToClass[clsid] KeyError: '{00020970-0000-0000-000-000000000046}'

现在有趣的是,这个错误给我的关键不同于关键的makepy发现。搜索互联网我发现注册表搞砸了可能的解决方案。然而,这将解释两种情况(即解释和编译)的失败,而我的问题仅限于编译版本。我还想知道是否可能存在32/64位问题,但据我所知,我的python工具链是32位。我试过了:

  • 使用和不使用typelib作为py2exe选项的py2exe安装脚本

  • 清理genpy(在temp目录和python站点包中) win32com客户端目录)

我期待着您对此提出建议。

0 个答案:

没有答案