我正在尝试编译一个使用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客户端目录)
我期待着您对此提出建议。