torch1.8.0搭配torch-sparse0.6.11报错AttributeError:torch无cuda属性
AttributeError: partially initialized module 'torch' has no attribute 'cuda' 解决指南
根本原因
该报错核心为torch-sparse版本与当前PyTorch版本、CUDA版本不匹配,导入时触发循环依赖导致torch模块半初始化,无法正常读取cuda属性。
解决步骤
1. 卸载现有冲突包
先清理所有不匹配的相关包,避免残留干扰:
pip uninstall torch-sparse torch-scatter torch-cluster torch-spline-conv torch-geometric -y pip uninstall torch torchvision torchaudio -y
2. 安装匹配的PyTorch 1.8.0版本
以CUDA 11.1版本为例(如为CPU版本或其他CUDA版本,调整命令中cu111后缀即可):
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
安装完成后先单独验证PyTorch可用性,确认无报错:
import torch print(torch.__version__) # 输出应为 1.8.0+cu111 print(torch.cuda.is_available()) # 正常输出为True(GPU环境)或False(CPU环境)
3. 安装匹配的torch-sparse 0.6.11版本
对应CUDA 111环境命令:
pip install torch-sparse==0.6.11 -f https://data.pyg.org/whl/torch-1.8.0+cu111.html
对应CPU环境命令:
pip install torch-sparse==0.6.11 -f https://data.pyg.org/whl/torch-1.8.0+cpu.html
4. 验证最终效果
执行以下代码确认导入正常:
import torch from torch_sparse import SparseTensor print("模块导入成功,无报错")
额外注意事项
- 不要将自己的代码文件命名为
torch.py、cuda.py等和官方库重名的名称,否则会触发导入优先级问题,导致半初始化报错 - 操作前先激活对应的conda/venv虚拟环境,避免包安装到全局环境产生冲突
内容的提问来源于stack exchange,提问作者zyfreshman
相关产品推荐
相关产品推荐

