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

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源码:
  1. 打开文件C:\Users\Admin\AppData\Roaming\Python\Python312\site-packages\speech_recognition\__init__.py
  2. 找到第111行的from distutils.version import LooseVersion,替换为:
from setuptools._distutils.version import LooseVersion
  1. 保存文件后重新运行脚本。

内容的提问来源于stack exchange,提问作者om sutar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:27:46