AttributeError: module 'win32com.gen_py.00062FFF-0000-0000-C000-000000000046x0x9x6' has no attribute 'CLSIDToPackageMap'
我已经运行了一段时间的代码,这些代码使用win32com.client自动处理一些电子邮件。几个月来,一切都在运行,但今天我得到了一个错误。
import win32com.client olMailItem = 0 obj = win32com.client.Dispatch("Outlook.Application") newMail = obj.CreateItem(olMailItem)
今天我得到了错误
AttributeError: module 'win32com.gen_py.00062FFF-0000-0000-C000-000000000046x0x9x6' has no attribute 'CLSIDToPackageMap'
如果我尝试"Excel.Application“或"Word.Application”,我没有得到一个错误,Outlook已经安装并在我的系统上工作。上周,我遇到了mail.Bcc和mail.HTMLbody分别更改为mail.BCC和mail.HTMLBody的问题,但我没有发现字符串中的更改有什么帮助。
有没有人能解释一下可能发生的事情?
提前谢谢。
您可能需要删除一些旧文件:
1 # If errors are found, do this 2 # clear contents of C:\Users\<username>\AppData\Local\Temp\gen_py 3 # that should fix it, to test it type 4 import win32com.client 5 app = win32com.client.gencache.EnsureDispatch("Outlook.Application") 6 app.Visible = True
This gist还有其他自动删除文件的解决方案。应用程序需要调整。
1 1.) 2 3 from pathlib import Path 4 try: 5 xl = win32.gencache.EnsureDispatch('Excel.Application') 6 except AttributeError: 7 f_loc = r'C:\Users\<username>\AppData\Local\Temp\gen_py' 8 for f in Path(f_loc): 9 Path.unlink(f) 10 Path.rmdir(f_loc) 11 xl = win32.gencache.EnsureDispatch('Excel.Application')
12
13 2.) 14 15 try: 16 xl = client.gencache.EnsureDispatch('Excel.Application') 17 except AttributeError: 18 # Corner case dependencies. 19 import os 20 import re 21 import sys 22 import shutil 23 # Remove cache and try again. 24 MODULE_LIST = [m.__name__ for m in sys.modules.values()] 25 for module in MODULE_LIST: 26 if re.match(r'win32com\.gen_py\..+', module): 27 del sys.modules[module] 28 shutil.rmtree(os.path.join(os.environ.get('LOCALAPPDATA'), 'Temp', 'gen_py')) 29 from win32com import client 30 xl = client.gencache.EnsureDispatch('Excel.Application')