MacOS下解决ModuleNotFoundError: No module named 'distutils'的方法
ModuleNotFoundError: No module named 'distutils'问题 我参照Code With Harry的视频制作Jarvis语音识别程序,运行时卡在语音识别环节,报错如下:
File "/Users/hridayjain/PycharmProjects/Jarvis/main.py", line 18, in
text=takeCommand()
^^^^^^^^^^^^^
File "/Users/hridayjain/PycharmProjects/Jarvis/main.py", line 8, in takeCommand
with sr.Microphone() as source:
^^^^^^^^^^^^^^^
File "/Users/hridayjain/PycharmProjects/Jarvis/.venv/lib/python3.12/site-packages/speech_recognition/init.py", line 80, in init
self.pyaudio_module = self.get_pyaudio()
^^^^^^^^^^^^^^^^^^
File "/Users/hridayjain/PycharmProjects/Jarvis/.venv/lib/python3.12/site-packages/speech_recognition/init.py", line 111, in get_pyaudio
from distutils.version import LooseVersion
ModuleNotFoundError: No module named 'distutils'
报错原因
Python 3.12及以上版本默认不再自带distutils模块,而speech_recognition库在检查PyAudio版本时需要依赖它,因此触发该错误。
解决步骤
安装distutils
macOS用户通过brew安装:brew install python-setuptoolsUbuntu/Linux用户安装系统包:
sudo apt-get install python3-distutilsWindows用户直接通过pip安装setuptools(distutils包含在setuptools中):
pip install setuptools重新安装PyAudio
确保PyAudio安装正常,执行:pip install pyaudiomacOS若安装失败,先安装portaudio依赖:
brew install portaudio pip install pyaudio验证修复
重新运行Jarvis程序,检查语音识别环节是否正常执行。
内容的提问来源于stack exchange,提问作者Hriday Jain

