2016-07-25 73 views
0

我在其他网站上看到过一些与我的问题相关的帖子,但没有任何工作。长话短说,我的程序importa win32com.client访问Microsoft Word。我使用py2exe创建一个独立的可执行文件,并且每次用户选择打开MS Word的选项时,都会得到一个KeyError。下面是一个编译器宣称的错误代码是:py2exe转换后的脚本无法正常运行win32com.client

# 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,我的错误行数只增加了。提前致谢!

+0

也许命名空间的错误。尝试:'将win32com.client导入为new_name'稍后'MS_Word = new_name.gencache.EnsureDispatch('Word.Application')'。你的CLSD是正确的,但我的东西'不能解析子类名'。 – dsgdfg

+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