2017-10-18 125 views
1

私は、Outlookとのインターフェースをとり、Outlookのために電子メールを送信できるPythonアプリケーションを開発しています。このため、win32com.clientを使用するには、win32comライブラリを使用する必要があります。

これに加えて、同じPythonスクリプトでも、Oracleのmysqlコネクタを使用してMySQLデータベースにアクセスする必要があります。このため、Python34を使用する必要があります。これは、SQLコネクタで作業するために管理している唯一のバージョンです。

ここに問題の要点があります。私はwin32comをインストールしています(Python34にあらかじめインストールされていないので)、エラーなしでインストールされ、Python内でwin32comを正常にインポートできます。しかし、win32com.clientをインポートするとき、それは以下のエラーメッセージが得られます。

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' 

美しい誤差が、そうではありません!ディレクトリ'C:\\Python34\\lib\\site-packages\\win32com\\gen_py\\'を手動でチェックして、そこにあるものを確認してください。ここには、完全に空です。 win32comをインストールしたときに、管理者権限でインストールされていたため、この問題は解決できませんでした。私はwin32comモジュールを再インストールして、それが修正されているかもしれないが役に立たないかどうかを確認しました。 Pythonのでもう少し経験を持つ誰もが、私がインストールまたは修復するために必要なものにいくつかのアドバイスを提供することができれば

は、私がここでの問題発見

答えて

0

感謝だろう。 Pythonを管理者として実行する必要があることが分かりました.Permissionのエラーが出たら、それを解決したはずです。しかし、gen_pyディレクトリがどのようにまだ空であるか不思議です。

+0

異なるユーザーとして実行している場合、pythonはおそらくまったく異なる場所にあるモジュールを検索します。 –

+0

Pythonを常に管理者として実行することは、実際のところ解決策ではありません。 'pywin32'にはこのような目立たない設計上の欠陥があるとは思わない。何か他のものでなければならないかもしれません。管理者として一度実行する必要があるかもしれません(これはまだ重要な問題ではありませんが、バグです)。 @DanielleM @ –

+0

おそらく正しいアイデアがあります。 win32comモジュールをインストールするには、システムの制限のために管理者モードを使用しなければなりませんでした。これにより、おそらくまったく別のディレクトリにインストールされている可能性がありますが、それでもかなり奇妙なバグです。 – Polymer

関連する問題