这类问题我又碰上了一次。在内网服务器用 dashscope 1.20 做流式语音识别,import 就报 ModuleNotFoundError,指向 websocket-client,requirements 里只写了 dashscope,没有单独列这个包。
第一反应是「内网源缺少该包 被静默跳过」,验证下来不成立。
排查方向其实有限,先把可能性排一排。流式能力依赖 websocket-client 可选包;安装时用了 --no-deps;包装到了另一个 Python 解释器。
先看 SDK 已装的依赖清单
pip show dashscope
补齐 websocket-client
pip install websocket-client==1.8.0
指定内网源再装一次
pip install -i https://mirrors.internal/simple websocket-client
末了用最小脚本验证导入
python -c "import websocket;print(websocket.__version__)"
隔了一天再看,现象没变,说明不是偶发。
那几天正好在做别的变更,先把时间线对齐才敢动手。
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
恢复的判定其实很直接。import dashscope 不再报错,流式识别能收到第一段结果,日志里能看到握手成功。
可选依赖不会随主包自动装,离线环境要把这些包一起打进镜像,不然换台机器又缺。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
