2016-07-25 8 views
0

다른 사이트에서 내 문제와 관련된 몇 가지 게시물을 보았지만 아무 효과가 없습니다. 긴 이야기를 짧게하기 위해, 내 프로그램 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를 나중에 새 이름으로 가져 오기''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