2017-10-18 9 views
1

Je développe une application Python qui peut s'interfacer avec Outlook et envoyer des courriels au nom d'Outlook. Pour cette raison, j'ai besoin de l'utilisation de la bibliothèque win32com, afin d'utiliser win32com.client. En plus de cela, le même script Python devra également accéder à une base de données MySQL en utilisant le connecteur mysql d'Oracle. Pour cette raison, Python34 doit être utilisé car c'est la seule version que j'ai réussi à utiliser avec le connecteur sql.

Maintenant, voici le noeud du problème. J'ai installé win32com (car il n'est pas pré-installé avec Python34) et il est installé sans erreurs, et je peux très bien importer win32com dans python. Cependant, lors de l'importation win32com.client, il donne le message d'erreur ci-dessous:

Erreur d'importation avec win32com.gen_py

>>> import win32com.client 
Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\win32com\client\gencache.py", line 60, in __init__ 
     _LoadDicts() 
    File "C:\Python34\lib\site-packages\win32com\client\gencache.py", line 110, in _LoadDicts 
     f = open(os.path.join(win32com.__gen_path__, "dicts.dat"), "rb") 
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Python34\\lib\\site-packages\\win32com\\gen_py\\dicts.dat' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\win32com\client\gencache.py", line 143, in GetGeneratePath 
     os.stat(fname) 
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\\Python34\\lib\\site-packages\\win32com\\gen_py\\__init__.py' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python34\lib\site-packages\win32com\client\__init__.py", line 11, in <module> 
     from . import gencache 
    File "C:\Python34\lib\site-packages\win32com\client\gencache.py", line 666, in <module> 
     __init__() 
    File "C:\Python34\lib\site-packages\win32com\client\gencache.py", line 62, in __init__ 
     Rebuild() 
    File "C:\Python34\lib\site-packages\win32com\client\gencache.py", line 653, in Rebuild 
     _SaveDicts() 
    File "C:\Python34\lib\site-packages\win32com\client\gencache.py", line 69, in _SaveDicts 
     f = open(os.path.join(GetGeneratePath(), "dicts.dat"), "wb") 
    File "C:\Python34\lib\site-packages\win32com\client\gencache.py", line 145, in GetGeneratePath 
     f = open(fname,"w") 
PermissionError: [Errno 13] Permission denied: 'C:\\Python34\\lib\\site-packages\\win32com\\gen_py\\__init__.py' 

erreur Belle, ne l'est pas! Je ai vérifié le répertoire 'C:\\Python34\\lib\\site-packages\\win32com\\gen_py\\' manuellement pour voir ce qu'il ya, et voici la chose, il est complètement vide. Lorsque j'ai installé win32com j'ai installé avec des autorisations d'administrateur, donc cela ne pouvait pas être le problème. J'ai également ré-installé le module win32com pour voir si cela a pu le réparer mais en vain.

Si quelqu'un avec un peu plus d'expérience avec Python pourrait offrir quelques conseils sur ce que je dois installer ou réparer je serais reconnaissant

Répondre

0

trouvé la question ici. Il s'avère que j'ai besoin d'exécuter Python en tant qu'administrateur, cela aurait dû fonctionner avec l'erreur Permission. Étrange comment le répertoire gen_py est toujours vide, cependant.

+0

Lorsqu'il s'exécute en tant qu'utilisateur différent, python recherche probablement des modules dans un emplacement entièrement différent. –

+0

Toujours exécuter Python en tant qu'administrateur n'est pas vraiment une solution. Je ne pense pas non plus que 'pywin32' ait un défaut de conception aussi flagrant. Doit être quelque chose d'autre - peut-être que vous devez l'exécuter en tant qu'administrateur une fois (ce serait toujours un bogue, mais pas un critique). –

+0

@DanielleM. a probablement la bonne idée. Afin d'installer le module win32com, j'ai dû utiliser le mode administrateur, en raison des restrictions du système. Pour cette raison, il aurait très probablement pu être installé dans un répertoire entièrement différent, mais même s'il s'agit d'un bug assez étrange. – Polymer