Kaggle导入torch_geometric遇undefined symbol错误求助
解决torch_sparse undefined symbol错误的方案
问题根源
你碰到的OSError: /opt/conda/lib/python3.7/site-packages/torch_sparse/_version_cuda.so: undefined symbol: _ZN5torch3jit17parseSchemaOrNameERKSs错误,本质是torch-sparse等PyG依赖库的CUDA版本、PyTorch版本,与Kaggle环境的CUDA(nvcc 11.0)、本地PyTorch版本不匹配——你安装时指定了适配cu113的包,但系统CUDA是11.0,版本不兼容导致符号解析失败。
分步修复方案
1. 确认当前环境的PyTorch与CUDA版本
先运行以下代码,明确当前Kaggle环境的PyTorch版本和对应的CUDA版本:
import torch print(torch.__version__) print(torch.version.cuda)
2. 彻底清理已安装的PyG组件
先卸载所有可能冲突的PyG相关包:
pip uninstall -y pyg-lib torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric
3. 安装匹配CUDA 11.0的PyG依赖
根据步骤1查到的PyTorch版本,选择适配cu110的安装链接。比如你的PyTorch是1.12.0,执行:
pip install pyg-lib torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://data.pyg.org/whl/torch-1.12.0+cu110.html
如果PyTorch版本不同,替换链接中torch-xxx+cu110的xxx部分即可。
4. 备选:conda安装加速并指定CUDA版本
之前conda安装超时,可通过指定CUDA版本+替换国内镜像源解决:
# 添加清华镜像源加速 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pyg/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ # 安装适配CUDA 11.0的PyG conda install pyg cudatoolkit=11.0
5. 验证修复效果
重新运行导入语句:
from torch_geometric.data import Data
无报错则说明安装成功。
补充:为什么Colab能正常运行?
Colab的默认环境中,PyTorch、CUDA与PyG依赖是预先适配好的版本组合,无需手动指定版本,因此不会出现兼容问题。
内容的提问来源于stack exchange,提问作者rana
相关产品推荐
相关产品推荐

