升级Windows11后pyttsx3报KeyError:sapi5及pywintypes导入错误如何解决
故障关联判定
该故障和Windows 11系统升级直接相关。Windows 11升级过程中会重置部分系统组件的注册表关联、以及系统级动态链接库(dll)的加载路径,你遇到的pywintypes39.dll缺失属于pywin32组件的依赖问题,而pywin32是pyttsx3调用sapi5接口、以及部分opencv-python依赖的系统交互组件,升级后路径失效会连带影响多个依赖库的运行。
修复步骤
- 第一步:修复pywin32组件
首先卸载当前安装的pywin32,再重新安装适配版本,执行命令:
pip uninstall pywin32 -y pip install pywin32==306
安装完成后执行注册命令:
python C:\Users\subha\AppData\Roaming\Python\Python39\site-packages\pywin32_system32\pywin32_postinstall.py -install
如果使用Python虚拟环境,需将路径替换为虚拟环境目录下对应的pywin32安装路径
- 第二步:验证pyttsx3运行
初始化pyttsx3的时候可以省略sapi5参数,Windows下会自动默认调用,修改后的代码参考:
import pyttsx3 engine = pyttsx3.init() voices = engine.getProperty('voices') # 先打印所有语音对象确认索引存在,避免索引越界报错 for idx, voice in enumerate(voices): print(f"索引{idx}:{voice.id}") # 确认索引存在后再设置 engine.setProperty('voice', voices[0].id) def speak(audio): engine.say(audio) engine.runAndWait()
运行上述代码如果能正常打印语音列表,说明pyttsx3修复完成。
- 第三步:修复opencv项目
重新安装对应版本的opencv-python即可:
pip uninstall opencv-python opencv-python-headless -y pip install opencv-python==4.5.5.62
如果还是报错,检查系统环境变量里的PATH是否包含Python39的安装目录、以及Python39下Scripts目录的路径,Windows 11升级可能会清除部分用户自定义的PATH配置。
内容的提问来源于stack exchange,提问作者sub0d33p
相关产品推荐
相关产品推荐

