2016-07-25 6 views
0

J'ai vu quelques messages liés à mon problème sur d'autres sites, mais rien n'a fonctionné. Pour faire une histoire courte, mon programme importa win32com.client pour accéder à Microsoft Word. Je crée un exécutable autonome en utilisant py2exe et chaque fois que l'utilisateur sélectionne l'option pour ouvrir MS Word, je reçois une KeyError. Voici le code que le compilateur prétend l'erreur est:Le script converti py2exe ne fonctionne pas correctement win32com.client

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

Et ci-dessous est le résultat lorsque le programme exécuté cette ligne particulière:

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}' 

J'utilise Tkinter aussi bien, mais il n'est pas la source du problème. L'ouverture de MS Word à partir du programme est une nouvelle fonctionnalité que j'ai ajoutée et elle échoue uniquement lorsque je crée l'application autonome. J'ai également essayé Pyinstaller et je n'ai augmenté ma ligne d'erreurs. Merci d'avance!

+0

Peut-être que les bugs nom-espace. Essayez: 'import win32com.client as new_name' plus tard' MS_Word = new_name.gencache.EnsureDispatch ('Word.Application') '. Votre CLSD est juste mais mon truc 'ne peut pas résoudre les noms de sous-classe'. – dsgdfg

+0

Merci de votre aide, malheureusement, cela n'a pas fonctionné. Je n'arrive même pas à comprendre le problème: "( –

Répondre

0

OKAY! Donc, pour une raison quelconque, le fichier library.zip créé par py2exe après l'exécution ne permet pas aux modules comme win32com.client d'être importés dans le programme. Pourquoi? Je ne sais vraiment pas je suis un noob à ce genre de choses. Quoi qu'il en soit, la solution suivante fonctionne très bien, comme si je n'avais au début aucun problème. C'est ce qui devrait être inclus dans le script setup.py. Pris d'un autre poste. J'espère que cela aide quelqu'un :)

setup( 
... 

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

Ignoring library.zip in py2exe