【2026年4月】5060ti使用pyannote报错segmantation fault, torch环境污染2.9.1和2.8.0-cu128混掉了删除重新安装新环境
不知道为什么环境突然炸了,直接创建新环境重新安装
pip install --no-cache-dir \
torch==2.8.0 torchaudio==2.8.0 torchvision==0.23.0 \
--index-url https://download.pytorch.org/whl/cu128
以下是问题分析
这就说明一件事:
pip show 的元数据看起来对上了,但你环境里的实际二进制库很可能还是脏的。
也就是:
- 表面上:
torch 2.8.0+cu128 - 表面上:
torchaudio 2.8.0+cu128 - 但实际加载时:
libtorchaudio.so里的符号和当前torch不匹配
所以你才会出现这种很典型的情况:
pip show 看着没问题
import torchaudio 还是炸
这通常不是“版本号理解错了”,而是下面几种之一:
- 之前升级/降级残留了旧的
.so文件 - conda 和 pip 混装过 torch 系列
- 当前 shell 进的不是你以为的那套环境
- site-packages 里库文件被覆盖得不干净
现在最关键的判断
你前面这条:
torch: 2.9.1 cuda: 12.8
和现在这条:
pip show torch -> 2.8.0+cu128
互相矛盾。
这说明你之前执行的那个 python 看到的 torch,和现在 pip show 看到的,很可能不是完全一致的一套状态。
先不要猜,直接查这三个:
which python
which pip
python -c "import sys; print(sys.executable)"
python -c "import torch; print(torch.__version__, torch.__file__)"
pip show torch
如果:
which pip不是当前 conda 环境里的 pip- 或
python和pip指向不同环境
那就解释通了。
更重要的是:直接看实际导入到哪个库
跑这个:
python - <<'PY'
import torch
print("torch version:", torch.__version__)
print("torch file:", torch.__file__)
try:
import torchaudio
print("torchaudio version:", torchaudio.__version__)
print("torchaudio file:", torchaudio.__file__)
except Exception as e:
print("torchaudio import failed:", repr(e))
PY
这个比 pip show 更可信,因为它看的是运行时实际加载的包。
我对你现在环境的判断
大概率是:
torchaudio 的共享库残留/污染了,即使 pip show 显示 2.8.0,也不代表 libtorchaudio.so 真的是一套干净匹配的 2.8.0。
你前面的错误:
undefined symbol: _ZNK3c106SymInt6sym_neERKS0_
本质还是二进制 ABI 不匹配,不是普通 Python 包版本号问题。
最稳的修法
不要只看 pip show,直接强制重装,而且要清缓存。
在你当前环境里执行:
pip uninstall -y torchaudio torchvision torch
pip cache purge
然后重新安装同源同版本:
pip install --no-cache-dir \
torch==2.8.0 torchaudio==2.8.0 torchvision==0.23.0 \
--index-url https://download.pytorch.org/whl/cu128
这里加 --no-cache-dir 很重要,避免又把脏轮子/缓存装回去。
如果你以前用 conda 装过这几个,再补一步
先查:
conda list | grep -E "torch|torchaudio|torchvision"
如果里面也有 pytorch / torchaudio / torchvision,那说明你可能确实混装过。
这种情况下建议先删干净:
conda remove -y pytorch torchaudio torchvision
pip uninstall -y torch torchaudio torchvision
然后只保留 一种方式安装。
对你这个项目,我更建议三件套都用 pip 官方 cu128 轮子。
重装后先只测这个
python - <<'PY'
import torch
import torchaudio
print("torch:", torch.__version__, torch.version.cuda)
print("torchaudio:", torchaudio.__version__)
print("cuda available:", torch.cuda.is_available())
PY
只要这一步过了,再测:
python - <<'PY'
import pyannote.audio
print("pyannote ok")
PY
再过了,WhisperX 初始化问题才有意义继续看。
你现在先别急着跑字幕脚本
顺序应该是:
- 先把
torch / torchaudio导入修好 - 再测
pyannote.audio - 再测
whisperx.load_model(...) - 最后再回到双语字幕脚本
还有一个很现实的建议
如果你想最快跑通项目,而不是继续和 WhisperX/pyannote 环境搏斗,
那在 torch/torchaudio 修好后,我仍然建议你优先走:
faster-whisper + Silero VAD + 你自己的重切分 + 本地翻译
这条路线通常比 WhisperX 稳。
你先把这几个命令的输出贴来最有价值:
which python
which pip
python -c "import sys; print(sys.executable)"
python -c "import torch; print(torch.__version__, torch.__file__)"
conda list | grep -E "torch|torchaudio|torchvision"
找到了,根因已经很清楚了:
不是 WhisperX 本身,也不是 pyannote.audio 本身。是你的 torch 和 torchaudio 版本/编译不匹配。
你这条报错最关键的是:
libtorchaudio.so: undefined symbol: _ZNK3c106SymInt6sym_neERKS0_
这类 undefined symbol 基本就等于:
torchaudio是按另一版torch编出来的,和你当前装着的torchABI 对不上。
而 pyannote.audio 依赖 torchaudio,所以:
import torchaudio先炸import pyannote.audio也跟着炸- WhisperX 默认会碰到 pyannote/torchaudio,于是初始化也炸
你现在的真正问题链路
现在的链路是:
WhisperX
-> pyannote.audio
-> torchaudio
-> libtorchaudio.so
-> 和当前 torch 2.9.1 不匹配
-> 崩溃 / bad_alloc / core dumped
所以这次不是继续改脚本,而是先把 torch / torchaudio 修成同一套。
最稳的修法
方案 A:统一重装 torch / torchaudio
先看你当前装的是混来的还是同源安装的。最省事的做法是直接卸掉重装。
先执行:
pip uninstall -y torchaudio torch torchvision
如果你之前也用 conda 装过,再执行:
conda remove -y torchaudio torch torchvision
然后用同一种方式重装,别 conda/pip 混着给这几个核心包装。
我建议你先用 PyTorch 官方 pip 轮子统一装
你现在是 CUDA 12.8 环境,直接装匹配的一套。
如果你要继续用 torch 2.9.x
那就把三件套一起装:
pip install torch torchaudio torchvision --index-url https://download.pytorch.org/whl/cu128
装完验证:
python - <<'PY'
import torch, torchaudio
print("torch:", torch.__version__, "cuda:", torch.version.cuda)
print("torchaudio:", torchaudio.__version__)
print("cuda available:", torch.cuda.is_available())
PY
只要 import torchaudio 不再报错,就说明核心问题修好了。
更稳的方案 B:降到更常见的一套
如果你不执着 2.9.1,我更建议你装一套更常见、更稳的版本组合。
核心原则只有一个:
torch 和 torchaudio 必须同大版本、同来源、同 CUDA 轮子。
比如统一装 2.8 系列:
pip uninstall -y torchaudio torch torchvision
pip install torch==2.8.0 torchaudio==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128
很重要:不要再混装这几个核心包
最常见踩坑方式就是:
conda装了torchpip又装了torchaudio- 或者反过来
这样最容易出现你这种:
libtorchaudio.so undefined symbol
所以对这三个包:
torchtorchaudiotorchvision
要么全 conda,要么全 pip。
修好后先验证这三步
1
python -c "import torchaudio; print(torchaudio.__version__)"
2
python - <<'PY'
import pyannote.audio
print("pyannote ok")
PY
3
python - <<'PY'
import whisperx
print("whisperx ok")
PY
这三步都过了,再回去跑你的字幕脚本。
关于那个 warning
PYTORCH_CUDA_ALLOC_CONF is deprecated, use PYTORCH_ALLOC_CONF instead
这个不是主因,可以先忽略。
只是环境变量名变了,不会导致你现在这个 libtorchaudio.so 错误。
你现在最短路径
我建议你直接这样做:
pip uninstall -y torchaudio torch torchvision
pip install torch torchaudio torchvision --index-url https://download.pytorch.org/whl/cu128
然后立刻测试:
python - <<'PY'
import torch, torchaudio
print(torch.__version__, torch.version.cuda)
print(torchaudio.__version__)
PY
如果这一步过了,你的 pyannote.audio 大概率也会跟着恢复正常。
你把这一步执行后的输出贴来,我可以继续帮你确认接下来 WhisperX 那个脚本该怎么跑最稳。
更多推荐



所有评论(0)