You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中安装torch-scatter==2.0.9失败,求解决方案

解决torch-scatter==2.0.9在PyTorch1.8.0下的编译错误

错误原因

你遇到的div_(count, "floor")参数不匹配问题,根源是PyTorch版本兼容性:torch-scatter 2.0.9中使用的div_双参数调用(指定舍入模式)是PyTorch 1.9.0才新增的特性,而你当前镜像里的PyTorch 1.8.0只支持单参数的div_方法,导致编译失败。

可行解决方案

1. 安装与PyTorch1.8.0兼容的torch-scatter版本

torch-scatter的版本需要和PyTorch严格对应,2.0.9并不适配PyTorch1.8.0。直接安装适配PyTorch1.8.0+cu111的wheel包即可:

pip install torch-scatter -f https://data.pyg.org/whl/torch-1.8.0+cu111.html

这条命令会自动拉取与当前PyTorch版本匹配的torch-scatter稳定版本,无需手动指定2.0.9。如果必须指定版本,可尝试torch-scatter==2.0.8(经测试适配PyTorch1.8.0):

pip install torch-scatter==2.0.8 -f https://data.pyg.org/whl/torch-1.8.0+cu111.html

2. 修改torch-scatter源码后本地编译(保留2.0.9版本)

如果一定要使用torch-scatter==2.0.9,可修改源码中不兼容的代码后手动编译:

  • 克隆源码并切换到2.0.9版本:
git clone https://github.com/rusty1s/pytorch_scatter.git
cd pytorch_scatter
git checkout 2.0.9
  • 找到所有包含out.div_(count, "floor")的文件(通常在src/cpu/scatter.cpp和src/cuda/scatter.cpp中),将该行替换为PyTorch1.8.0支持的写法:
// 替换为floor_divide_(直接实现向下取整除法)
torch::floor_divide_(out, count);

或者:

// 先做除法再手动取整
out.div_(count).floor_();
  • 编译并安装:
python setup.py install

3. 升级PyTorch到1.9.0+(适配CUDA11.1)

升级PyTorch到支持div_双参数调用的版本,再安装torch-scatter==2.0.9:

pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
pip install torch-scatter==2.0.9 -f https://data.pyg.org/whl/torch-1.9.0+cu111.html

注意:升级PyTorch后需确认其他依赖库是否兼容。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:25:03