win32com.gen_py导入错误

问题描述:

我正在开发一个Python应用程序,它可以与Outlook接口并以Outlook的名义发送电子邮件。正因为如此,我需要使用win32com库,才能使用win32com.client

除此之外,相同的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。奇怪的是,gen_py目录仍然是空的,但是。

+0

当作为不同的用户运行时,python可能会在完全不同的位置搜索模块。 –

+0

总是以管理员身份运行Python并不是真正的解决方案。我也不认为'pywin32'有这样一个公然的设计缺陷。必须是别的东西 - 也许需要一次运行它作为管理员(这仍然是一个错误,但不是一个关键的问题)。 –

+0

@DanielleM。可能有正确的想法。为了安装win32com模块,由于系统限制,我必须使用管理员模式。由于这个原因,它很可能安装在完全不同的目录中,但即使如此,这仍然是一个相当奇怪的错误。 – Polymer