py2exe转换后的脚本无法正确运行win32com.client

时间:2016-07-25 18:03:23

标签: python python-2.7 py2exe win32com keyerror

我在其他网站上看过几个与我的问题相关的帖子,但没有任何效果。长话短说,我的程序importa win32com.client访问Microsoft Word。我使用py2exe创建一个独立的可执行文件,每次用户选择打开MS Word的选项时,我都会得到一个KeyError。下面是编译器声称错误的代码:

# Call the MS Word app
MS_Word = win32com.client.gencache.EnsureDispatch('Word.application')

以下是程序运行此特定行时的结果:

Exception in Tkinter callback
Traceback (most recent call last):
File "Tkinter.pyc", line 1536, in __call__
File "PROTOTYPE_PCE.PY", line 46, in SCAN
File "win32com\client\gencache.pyc", line 544, in EnsureDispatch
File "win32com\client\CLSIDToClass.pyc", line 46, in GetClass
KeyError: '{00020970-0000-0000-C000-000000000046}'

我也在使用Tkinter,但它不是问题的根源。从程序中打开MS Word是我添加的一项新功能,它只在我创建独立应用程序时失败。我也试过Pyinstaller,我的错误行只增加了。提前谢谢!

1 个答案:

答案 0 :(得分:0)

OKAY!因此,出于某种原因py2exe运行后创建的library.zip文件不允许将win32com.client等模块导入程序。为什么?我真的不知道我是这个东西的菜鸟。无论如何,以下解决方案非常好用,好像我最初没有任何问题。这应该包含在setup.py脚本中。取自另一篇文章。我希望这有助于某人:)

setup(  
...

zipfile="foo/bar.zip", 
options={"py2exe": {"skip_archive": True}})

Ignoring library.zip in py2exe