2016-07-25 39 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