运行图生成EDGE扩散模型时torch_scatter报错求助
解决torch_scatter加载失败(Symbol not found: __ZN3c1017RegisterOperatorsD1Ev)
核心原因
该错误源于PyTorch与torch_scatter版本不匹配,或是torch_scatter预编译包和本地PyTorch的编译环境(如C++版本、CPU架构适配)不兼容,导致符号缺失,在Mac系统中这类预编译库适配问题尤为常见。
具体解决步骤
1. 清理现有环境
先卸载已安装的相关包,避免版本残留冲突:
pip uninstall -y torch torchvision torchaudio torch_scatter
2. 安装适配的PyTorch版本
针对你的Mac系统(Python3.10),使用官方推荐命令安装对应版本的PyTorch,CPU版本示例:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
若为M系列芯片Mac,直接使用上述命令会自动适配Apple Silicon版本。
3. 源码编译torch_scatter(关键适配步骤)
预编译包易出现环境不兼容问题,源码编译可确保完全适配本地PyTorch:
- 克隆仓库并进入目录:
git clone https://github.com/rusty1s/pytorch_scatter.git cd pytorch_scatter
- 查看当前PyTorch版本,切换到对应tag分支:
# 查看PyTorch版本 python -c "import torch; print(torch.__version__)" # 示例:若PyTorch为2.0.x,切换到v2.1.0 git checkout v2.1.0
- 编译安装(若提示cmake/ninja缺失,先通过
brew install cmake ninja安装):
python setup.py install
4. 验证安装
运行以下代码测试是否成功:
import torch from torch_scatter import scatter x = torch.tensor([1, 2, 3, 4, 5]) index = torch.tensor([0, 1, 0, 1, 0]) output = scatter(x, index, dim=0, reduce='sum') print(output) # 预期输出:tensor([9, 6])
额外注意事项
- 确保使用干净的虚拟环境(如你当前的myenv),避免全局包干扰。
- 不要混合使用conda和pip安装PyTorch,统一用一种包管理工具,减少环境冲突。
内容的提问来源于stack exchange,提问作者Turex
相关产品推荐
相关产品推荐

