Python 3.12安装PyAudio报错:module 'pkgutil' has no attribute 'ImpImporter'
解决Python 3.12下pip安装PyAudio报错问题
问题概述
执行pip install pyaudio时触发报错,已尝试安装numpy和wheel但问题未解决。
环境信息
- pip版本:23.2.1
- Python版本:3.12.0
报错日志
C:\Users\admin!>pip install pyaudio Collecting pyaudio Using cached PyAudio-0.2.13.tar.gz (46 kB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [33 lines of output] Traceback (most recent call last): File "C:\Users\admin!\AppData\Local\Programs\Python\Python312\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module> main() File "C:\Users\admin!\AppData\Local\Programs\Python\Python312\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\admin!\AppData\Local\Programs\Python\Python312\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 112, in get_requires_for_build_wheel backend = _build_backend() ^^^^^^^^^^^^^^^^ File "C:\Users\admin!\AppData\Local\Programs\Python\Python312\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 77, in _build_backend obj = import_module(mod_path) ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\admin!\AppData\Local\Programs\Python\Python312\Lib\importlib\__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1381, in _gcd_import File "<frozen importlib._bootstrap>", line 1354, in _find_and_load File "<frozen importlib._bootstrap>", line 1304, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1381, in _gcd_import File "<frozen importlib._bootstrap>", line 1354, in _find_and_load File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 929, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 994, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "C:\Users\admin!\AppData\Local\Temp\pip-build-env-5_67tfiy\overlay\Lib\site-packages\setuptools\__init__.py", line 16, in <module> import setuptools.version File "C:\Users\admin!\AppData\Local\Temp\pip-build-env-5_67tfiy\overlay\Lib\site-packages\setuptools\version.py", line 1, in <module> import pkg_resources File "C:\Users\admin!\AppData\Local\Temp\pip-build-env-5_67tfiy\overlay\Lib\site-packages\pkg_resources\__init__.py", line 2191, in <module> register_finder(pkgutil.ImpImporter, find_on_path) ^^^^^^^^^^^^^^^^^^^ AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'? [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip.
解决方案
1. 更新setuptools至兼容版本
Python 3.12移除了pkgutil.ImpImporter,旧版setuptools仍在调用该接口,先执行升级:
pip install --upgrade setuptools
2. 使用预编译wheel文件安装(推荐)
PyAudio官方源码包在Python 3.12下编译依赖复杂,直接下载对应Python版本和系统架构的预编译wheel文件,执行安装命令:
# 替换为对应版本的wheel文件名,示例为64位Python 3.12版本 pip install PyAudio-0.2.13-cp312-cp312-win_amd64.whl
3. 编译安装(备选)
若需源码编译,需先安装Microsoft Visual C++ Build Tools,安装时勾选「Desktop development with C++」组件,完成后重新执行:
pip install pyaudio
内容的提问来源于stack exchange,提问作者Dang Bao Khoa
相关产品推荐
相关产品推荐

