目录
前言
今天做一个图神经网络的实验,需要安装torch_geometric和dgl,踩到了一系列的坑,这里记录一下。
为什么为出现各种问题?
DGL官方不再为Win和Mac提供最新预编译包
在现在(2025-04-25),打开dgl.ai,如果你将Your OS选为Windows或者Mac,它会告诉你# Since 2024.06.27, we have stopped providing packages for Windows and MacOS. The latest version of available package is 2.2.1. For newer versions, please install from source.
意思就是自从2024.06.27,它就不再提供对新发布的dgl版本提供Windows和Mac的预编译包了,要想安装高于2.2.1版本的dgl,只能自己编译。如果懒得编译,最新就只能用上2.2.1的dgl。
我打开首页dgl.ai,看到最新的PyTorch选项为PyTorch2.4.x,按照习惯就在PyTorch官网下载了2.4.x中的最大版本2.4.1。
好不容易安装上之后就悲剧了,运行测试代码报错:FileNotFoundError: Cannot find DGL C++ graphbolt library at 你的Python环境路径\Lib\site-packages\dgl\graphbolt\graphbolt_pytorch_2.4.1.dll
。打开这个Lib\site-packages\dgl\graphbolt
这个路径一看,还真没graphbolt_pytorch_2.4.1.dll
:
最高只有PyTorch2.3.0,原来dgl提供的Windows中的预编译包2.2.1已经不是最新版本了,跟官网首页对不上号,只支持PyTorch2.1.0、2.1.1 … 2.3.0。
CUDA、PyTorch、DGL版本不匹配
打开PyTorch官网、DGL官网,你会发现,同一个PyTorch版本号,根据CUDA版本不同(或使用CPU),有不同的安装命令;DGL根据PyTorch以及CUDA(或使用CPU)版本不同,也有不同的安装命令。
如果不安装官方网站上提供的版本依赖关系安装,你可能会得到
ModuleNotFoundError: No module named 'torch.utils.benchmark'
FileNotFoundError: Cannot find DGL C++ graphbolt library at……
OSError: [WinError 126] 找不到指定的模块
等等奇奇怪怪的报错信息。第一个原因其实是这一条的特例
全流程
想要同时安装多个Python环境,这里推荐使用Miniconda管理,免费、轻量、功能完善。能够减少依赖冲突的发生。
安装Miniconda
根据官方文档安装。
创建虚拟环境gnn
运行conda create --name gnn python=3.10
,这个命令表示创建一个python3.10
的环境,我们把它命名为gnn
(名字可随意取,建议做到见名知意)。
在虚拟环境中安装PyTorch
首先执行conda activate gnn
激活gnn虚拟环境。
有了上面的经验,我们知道需要安装PyTorch2.1.0、2.1.1 … 2.3.0等在Lib\site-packages\dgl\graphbolt
中存在graphbolt_pytorch_x.y.z.dll
的版本。
这里安装PyTorch2.3.0(还是延续了我安装最新版的习惯…):
conda install pytorch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 cpuonly -c pytorch
命令可以PyTorch历史版本中找到。这里我懒得处理CUDA的依赖版本问题,安装的是CPU版。
在虚拟环境中安装pytorch-geometric
安装pytorch-geometric的依赖,打开pytorch-geometric依赖的预编译包网站,首先根据PyTorch的版本进入第一层文件夹,如博主这里安装的是PyTorch2.3.0的CPU版,打开torch-2.3.0+cpu
链接。
假设你安装的是PyTorch2.6.0和CUDA12.6,那么你需要打开
torch-2.6.0+cu124
链接。
接着根据你的Python版本
(如cp310表示CPython3.10)、操作系统
(如win、linux、macosx)、CPU架构
(如x86_64、amd64、universal2)选择要下载的torch_cluster、torch_scatter、torch_sparse安装文件,如torch_cluster-1.6.3+pt23cpu-cp310-cp310-win_amd64.whl
。
然后分别使用下列命令安装torch_cluster、torch_scatter、torch_sparse:
pip install 你下载的whl文件的相对路径或绝对路径
安装完torch_cluster、torch_scatter、torch_sparse后,执行下列命令安装torch_geometric:
pip install torch_geometric -i https://pypi.tuna.tsinghua.edu.cn/simple
在虚拟环境中安装DGL
打开DGL官网,选中自己的PyTorch版本(2.3.x)
、CUDA版本(None)
、Package类型(Conda
)以及操作系统(Windows)
,执行提供的conda安装命令:
conda install -c dglteam dgl
测试
运行下面的代码进行测试:
import dgl
import torch
import torch_geometric
如果输出类似进程已结束,退出代码为 0
,则表明安装成功。