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')

 

posted @ 2022-12-29 14:32  锦绣良缘  阅读(785)  评论(0)    收藏  举报