Python脚本运行报错ModuleNotFoundError: No module named 'distutils'求解决
解决
speech_recognition库导入distutils失败的问题 错误信息:
PS D:\jarvis> & C:/Python312/python.exe d:/jarvis/jarvis.py Traceback (most recent call last): File "d:\jarvis\jarvis.py", line 34, in <module> query = takecommand() ^^^^^^^^^^^^^ File "d:\jarvis\jarvis.py", line 15, in takecommand with sr.Microphone() as source: ^^^^^^^^^^^^^^^ File "C:\Users\Admin\AppData\Roaming\Python\Python312\site-packages\speech_recognition\__init__.py", line 80, in __init__ self.pyaudio_module = self.get_pyaudio() ^^^^^^^^^^^^^^^^^^ File "C:\Users\Admin\AppData\Roaming\Python\Python312\site-packages\speech_recognition\__init__.py", line 111, in get_pyaudio from distutils.version import LooseVersion ModuleNotFoundError: No module named 'distutils' PS D:\jarvis>
问题原因:
Python 3.12正式移除了distutils模块(该模块在Python 3.10已被标记为弃用),而当前使用的speech_recognition库版本仍依赖distutils做PyAudio版本校验,导致报错。
解决方法:
- 方法一:安装
setuptools(推荐)distutils现已整合到setuptools中,执行以下命令安装:
pip install setuptools
- 方法二:升级
speech_recognition到最新版本
新版本的speech_recognition已修复对distutils的依赖问题,执行升级命令:
pip install --upgrade speech_recognition
- 方法三:手动修改库源码(应急方案)
如果上述方法无效,可直接修改speech_recognition源码:
- 打开文件
C:\Users\Admin\AppData\Roaming\Python\Python312\site-packages\speech_recognition\__init__.py - 找到第111行的
from distutils.version import LooseVersion,替换为:
from setuptools._distutils.version import LooseVersion
- 保存文件后重新运行脚本。
内容的提问来源于stack exchange,提问作者om sutar
相关产品推荐
相关产品推荐

