错误问题汇总
1. Could not find Opus library. Make sure it is installed.
错误描述
(.venv) C:\Users\Junsen\Desktop\learning\xiaozhi-python>python xiaozhi-python.py
Traceback (most recent call last):
File "C:\Users\Junsen\Desktop\learning\xiaozhi-python\xiaozhi-python.py", line 5, in <module>
import opuslib
File "C:\Users\Junsen\Desktop\learning\xiaozhi-python\.venv\lib\site-packages\opuslib\__init__.py", line 19, in <module>
from .exceptions import OpusError # NOQA
File "C:\Users\Junsen\Desktop\learning\xiaozhi-python\.venv\lib\site-packages\opuslib\exceptions.py", line 10, in <module>
import opuslib.api.info
File "C:\Users\Junsen\Desktop\learning\xiaozhi-python\.venv\lib\site-packages\opuslib\api\__init__.py", line 20, in <module>
raise Exception(
Exception: Could not find Opus library. Make sure it is installed.
解决方案
Windows
- 下载并安装 Opus 库。
- 确保
opuslib
相关库正确安装。
Linux/macOS
- 运行以下命令安装
libopus
:shsudo apt-get install libopus-dev # Ubuntu/Debian brew install opus # macOS
- 运行以下命令安装
Python 代码安装
shpip install opuslib
2. externally-managed-environment
(macOS)
错误描述
(.venv) huangjunsen@huangjunsendeMac-mini py-xiaozhi % pip install -r requirements_mac.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
xyz, where xyz is the package you are trying to
install.
If you wish to install a Python library that isn't in Homebrew,
use a virtual environment:
python3 -m venv path/to/venv
source path/to/venv/bin/activate
python3 -m pip install xyz
If you wish to install a Python application that isn't in Homebrew,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. You can install pipx with
brew install pipx
You may restore the old behavior of pip by passing
the '--break-system-packages' flag to pip, or by adding
'break-system-packages = true' to your pip.conf file. The latter
will permanently disable this error.
If you disable this error, we STRONGLY recommend that you additionally
pass the '--user' flag to pip, or set 'user = true' in your pip.conf
file. Failure to do this can result in a broken Homebrew installation.
Read more about this behavior here: <https://peps.python.org/pep-0668/>
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
解决方案
- 使用虚拟环境安装sh
python3 -m venv my_env source my_env/bin/activate pip install -r requirements.txt
- 使用 `` 进行全局安装sh
brew install pipx pipx install package_name
- 强制安装(不推荐)sh
pip install package_name --break-system-packages
3. WebSocket连接失败: BaseEventLoop.create_connection() got an unexpected keyword argument 'extra_headers'
错误描述
python
# 建立WebSocket连接
self.websocket = await websockets.connect(
self.WEBSOCKET_URL,
extra_headers=headers # 高版本这里改为 additional_headers=headers
)
解决方案
- **新版本 **``:
extra_headers
改为additional_headers
。 - **旧版本 **``:
additional_headers
改为extra_headers
。
4. 没有找到默认的输入/输出音频设备
错误描述
AudioCodec - ERROR - 初始化音频设备失败: [Errno -9996] Invalid input device (no default output device)
AudioCodec - WARNING - 无法初始化音频设备: [Errno -9996] Invalid input device (no default output device)
解决方案
Windows:
- 在 声音设置 中启用麦克风和扬声器。
Linux/macOS:
shpactl list sources | grep "Name"
检查可用音频设备:
pythonimport pyaudio p = pyaudio.PyAudio() for i in range(p.get_device_count()): print(f"设备 {i}: {p.get_device_info_by_index(i)['name']}")
手动指定音频设备:
pythonstream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, input_device_index=0)
**5. ModuleNotFoundError: No module named '_tkinter'
mac m4以下常见 **
错误描述
(.venv) apple@appledeMac-mini py-xiaozhi % python main.py
Traceback (most recent call last):
File "/Users/apple/Desktop/py-xiaozhi/main.py", line 5, in <module>
from src.application import Application
File "/Users/apple/Desktop/py-xiaozhi/src/application.py", line 23, in <module>
from src.display import gui_display, cli_display
File "/Users/apple/Desktop/py-xiaozhi/src/display/gui_display.py", line 2, in <module>
import tkinter as tk
File "/opt/homebrew/Cellar/python@3.12/3.12.9/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/__init__.py", line 38, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named '_tkinter'
解决方案
安装
tcl-tk
shbrew upgrade tcl-tk # 一般第一步就可以了
检查 Homebrew 的
tcl-tk
路径shbrew info tcl-tk
重新安装 Python,并链接
tcl-tk
shbrew install python-tk
手动指定
Tcl/Tk
路径(如有必要)shexport PATH="/opt/homebrew/opt/tcl-tk/bin:$PATH" export LDFLAGS="-L/opt/homebrew/opt/tcl-tk/lib" export CPPFLAGS="-I/opt/homebrew/opt/tcl-tk/include"
重新创建虚拟环境
shpython3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
6. 导入 opuslib 失败: No module named 'pyaudioop'或'_cffi_backend'
错误描述
找到opus库文件: D:\xiaozhi\PC\py-xiaozhi-main\libs\windows\opus.dll
已添加DLL搜索路径: D:\xiaozhi\PC\py-xiaozhi-main\libs\windows
已成功加载 opus.dll: D:\xiaozhi\PC\py-xiaozhi-main\libs\windows\opus.dll
导入 opuslib 失败: No module named 'pyaudioop'
确保 opus 动态库已正确安装或位于正确的位置
或
找到opus库文件: D:\xiaozhi\PC\py-xiaozhi-main\libs\windows\opus.dll
已添加DLL搜索路径: D:\xiaozhi\PC\py-xiaozhi-main\libs\windows
已成功加载 opus.dll: D:\xiaozhi\PC\py-xiaozhi-main\libs\windows\opus.dll
导入 opuslib 失败: No module named '_cffi_backend'
请确保 opus 动态库已正确安装或位于正确的位置
解决方案
Python版本兼容性问题
- 这个错误通常与Python版本有关,尤其是Python 3.13版本
- 建议使用Python 3.9-3.12版本
重新安装cffi
shpip uninstall cffi pip install cffi
opus.dll放置
- 确保已将opus.dll放在正确位置(项目根目录和System32目录)
sh# 检查是否已复制到这些位置 C:\Windows\System32\opus.dll 项目根目录\opus.dll 项目根目录\libs\windows\opus.dll
安装pyaudioop支持库
- 对于'pyaudioop'错误,尝试降级Python版本或安装相关依赖
shpip install pyaudio
8. error: subprocess-exited-with-error
(安装 numpy
失败)
错误描述
Collecting numpy==2.0.2 (from -r requirements.txt (line 8))
Using cached https://mirrors.aliyun.com/pypi/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz (18.9 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... error
error: subprocess-exited-with-error
× Preparing metadata (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [21 lines of output]
...
WARNING: Failed to activate VS environment: Could not parse vswhere.exe output
ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']]
The following exception(s) were encountered:
Running `icl ""` gave "[WinError 2] 系统找不到指定的文件。"
Running `cl /?` gave "[WinError 2] 系统找不到指定的文件。"
Running `cc --version` gave "[WinError 2] 系统找不到指定的文件。"
Running `gcc --version` gave "[WinError 2] 系统找不到指定的文件。"
Running `clang --version` gave "[WinError 2] 系统找不到指定的文件。"
Running `clang-cl /?` gave "[WinError 2] 系统找不到指定的文件。"
Running `pgcc --version` gave "[WinError 2] 系统找不到指定的文件。"
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
解决方案
- 建议python版本在 3.9 - 3.12
确保
numpy
版本兼容numpy==2.0.2
可能存在构建问题,建议尝试安装较稳定的版本:shpip install numpy==1.24.3
如果你不需要特定版本,可以安装最新稳定版本:
shpip install numpy
安装编译工具
Windows用户可能需要安装Visual C++ Build Tools:
sh# 安装Microsoft C++ Build Tools # 下载并安装: https://visualstudio.microsoft.com/visual-cpp-build-tools/
使用预编译的轮子
shpip install --only-binary=numpy numpy