私は、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のでもう少し経験を持つ誰もが、私がインストールまたは修復するために必要なものにいくつかのアドバイスを提供することができれば
は、私がここでの問題発見
異なるユーザーとして実行している場合、pythonはおそらくまったく異なる場所にあるモジュールを検索します。 –
Pythonを常に管理者として実行することは、実際のところ解決策ではありません。 'pywin32'にはこのような目立たない設計上の欠陥があるとは思わない。何か他のものでなければならないかもしれません。管理者として一度実行する必要があるかもしれません(これはまだ重要な問題ではありませんが、バグです)。 @DanielleM @ –
おそらく正しいアイデアがあります。 win32comモジュールをインストールするには、システムの制限のために管理者モードを使用しなければなりませんでした。これにより、おそらくまったく別のディレクトリにインストールされている可能性がありますが、それでもかなり奇妙なバグです。 – Polymer