一。安装途径
一般在ubuntu中配置python环境,选择conda安装是不错的选择。conda可以轻松地安装torch等环境。在anaconda网站上,我们可以找到torch_scatter的安装指令:conda install -c esri torch-scatter,但是安装后会发现无法成功运行。经过对使用torch_scatter的开源项目的查询我发现基本上在requirement这一栏都会建议使用pip来安装torch_scatter。(在conda虚拟环境中使用pip安装的包和conda一样,是只存在于当前环境的。)
二。版本问题
有的开源项目会给出torch_scatter的pip install链接,但是使用pip install git+https://....git指令安装完成并运行时,会报错detected cuda version不匹配,但是你查看当前环境安装的cudatoolkit版本会发现和detected version有出入,经过无数次修改cuda版本再报错再修改再报错,我终于顿悟了。
首先要明确的一点是,我们需要保持torch和torch_scatter版本的高度一致。而一个使用conda源一个使用pip源会导致报错(虽然不知道为什么)。所以我们需要使用pip来安装torch。
为了保证版本一致,我们需要直接去https://download.pytorch.org/whl/torch_stable.html下载torch的whl文件并用pip install 安装。whl文件的文件名标明了torch的版本。注意:有的文件在网页上标了cuda版本可是实际下载下来文件名没有cuda,需要以实际文件名为准!例如,我的python版本是3.8,cuda版本10.2,那么我可以安装torch-1.9.0+cu102-cp38-cp38-linux_x86_64.whl。
安装完torch后,我第一反应是去https://pytorch-geometric.com/whl/torch-1.5.0.html下载相同版本的torch_scatter的whl文件并安装。我尝试了很多次,最后都会报错torch_scatter中有一串乱码无法识别,导致和torch对不上号。最终我在github.com/pyg-team/pytorch_geometric/issues/3058找到了解决办法:使用指令pip install --no-index torch-scatter -f https://pytorch-geometric.com/whl/torch-1.9.0+cu102.html,就可以把那串乱码去掉,然后就可以成功运行啦!