You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Python3生成Word脚本偶发pywin32 ModuleNotFoundError求助

问题根因

该偶发报错本质是win32com的COM类型库缓存生成/读取失败,多触发于并发调用COM接口、Word进程残留、缓存读写冲突、Python与Office位数不匹配的场景。你之前删除gen_py文件夹无效,通常是因为删除时缓存被占用、删除后再次并发生成了损坏的缓存文件。

可行解决方案
  • 优先使用动态调度跳过缓存(最有效解决偶发问题)
    把原有的win32.gencache.EnsureDispatch('Word.Application')调用替换为win32.Dispatch('Word.Application'),该模式不会生成本地gen_py缓存,从根源避免缓存读写冲突。如果调用时出现Word常量未定义的问题,可在初始化前提前预生成一次固定版本的缓存:
    win32.gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
  • 修正缓存清理操作
    原有删除gen_py的操作需要先释放所有占用缓存的Word进程,执行顺序如下:
    1. 执行命令taskkill /f /im WINWORD.EXE强制结束所有后台残留的Word进程
    2. 进入%LOCALAPPDATA%\Temp\路径,删除整个gen_py文件夹
    3. 单独启动一次脚本完成缓存生成,再正常执行批量任务
  • 规范COM对象释放逻辑
    每次生成文档完成后,必须按顺序释放文档和Word实例,避免进程残留:
    doc.Close(SaveChanges=1) # 根据需求选择是否保存修改
    del doc
    word.Quit()
    del word
    
  • 检查Python与Office位数匹配
    你的虚拟环境为32位Python,需确认本地安装的Office同样为32位版本,两者位数不匹配会频繁出现COM接口调用异常。

内容的提问来源于stack exchange,提问作者Christoph Stade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:51:03