安装PyTorch-Geometric时导入torch-sparse触发段错误求助
导入torch-sparse/pytorch_geometric触发段错误(Segmentation fault)
问题现象
导入torch-sparse时直接触发段错误,导入pytorch_geometric也因依赖该库出现同样问题:
尝试导入依赖库的报错:
Python 3.9.12 (main, Apr 5 2022, 06:56:58) [GCC 7.5.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch >>> import torch_scatter >>> import torch_cluster >>> import torch_sparse Segmentation fault (core dumped)
导入PyTorch-Geometric的报错:
Python 3.9.12 (main, Apr 5 2022, 06:56:58) [GCC 7.5.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch_geometric Segmentation fault (core dumped)
已尝试操作
- 最初怀疑GPU兼容性问题,更换过多个版本的依赖库
- 切换为纯CPU版本的PyTorch及PyTorch-Geometric相关库,问题未解决
环境信息
系统版本
Distributor ID: Ubuntu Description: Ubuntu 22.04.1 LTS Release: 22.04 Codename: jammy
Conda环境依赖
# Name Version Build Channel _libgcc_mutex 0.1 main _openmp_mutex 5.1 1_gnu blas 1.0 mkl brotlipy 0.7.0 py310h7f8727e_1002 bzip2 1.0.8 h7b6447c_0 ca-certificates 2022.07.19 h06a4308_0 certifi 2022.9.24 py310h06a4308_0 cffi 1.15.1 py310h74dc2b5_0 charset-normalizer 2.0.4 pyhd3eb1b0_0 cpuonly 2.0 0 pytorch cryptography 37.0.1 py310h9ce1e76_0 fftw 3.3.9 h27cfd23_1 idna 3.4 py310h06a4308_0 intel-openmp 2021.4.0 h06a4308_3561 jinja2 3.0.3 pyhd3eb1b0_0 joblib 1.1.1 py310h06a4308_0 ld_impl_linux-64 2.38 h1181459_1 libffi 3.3 he6710b0_2 libgcc-ng 11.2.0 h1234567_1 libgfortran-ng 11.2.0 h00389a5_1 libgfortran5 11.2.0 h1234567_1 libgomp 11.2.0 h1234567_1 libstdcxx-ng 11.2.0 h1234567_1 libuuid 1.0.3 h7f8727e_2 markupsafe 2.1.1 py310h7f8727e_0 mkl 2021.4.0 h06a4308_640 mkl-service 2.4.0 py310h7f8727e_0 mkl_fft 1.3.1 py310hd6ae3a3_0 mkl_random 1.2.2 py310h00e6091_0 ncurses 6.3 h5eee18b_3 numpy 1.23.3 py310hd5efca6_0 numpy-base 1.23.3 py310h8e6c178_0 openssl 1.1.1q h7f8727e_0 pip 22.2.2 py310h06a4308_0 pycparser 2.21 pyhd3eb1b0_0 pyg 2.1.0 py310_torch_1.12.0_cpu pyg pyopenssl 22.0.0 pyhd3eb1b0_0 pyparsing 3.0.9 py310h06a4308_0 pysocks 1.7.1 py310h06a4308_0 python 3.10.6 haa1d7c7_0 pytorch 1.12.1 py3.10_cpu_0 pytorch pytorch-cluster 1.6.0 py310_torch_1.12.0_cpu pyg pytorch-mutex 1.0 cpu pytorch pytorch-scatter 2.0.9 py310_torch_1.12.0_cpu pyg pytorch-sparse 0.6.15 py310_torch_1.12.0_cpu pyg readline 8.1.2 h7f8727e_1 requests 2.28.1 py310h06a4308_0 scikit-learn 1.1.2 py310h6a678d5_0 scipy 1.9.1 py310hd5efca6_0 setuptools 63.4.1 py310h06a4308_0 six 1.16.0 pyhd3eb1b0_1 sqlite 3.39.3 h5082296_0 threadpoolctl 2.2.0 pyh0d69192_0 tk 8.6.12 h1ccaba5_0 tqdm 4.64.1 py310h06a4308_0 typing_extensions 4.3.0 py310h06a4308_0 tzdata 2022e h04d1e81_0 urllib3 1.26.12 py310h06a4308_0 wheel 0.37.1 pyhd3eb1b0_0 xz 5.2.6 h5eee18b_0 zlib 1.2.13 h5eee18b_0
解决建议
1. 严格匹配PyTorch与PyG依赖版本
你的环境中PyTorch是1.12.1,但PyG相关库是基于torch_1.12.0编译的,小版本差异可能导致兼容性问题。重新安装匹配版本:
先卸载现有PyG相关库:
conda uninstall pyg pytorch-cluster pytorch-scatter pytorch-sparse
再用pip精准安装对应版本:
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://data.pyg.org/whl/torch-1.12.1+cpu.html
2. 降级GCC版本
Ubuntu 22.04默认GCC版本较高,部分PyG编译库对高版本GCC兼容性不佳。安装GCC 9并临时切换:
安装GCC 9:
sudo apt install gcc-9 g++-9
临时切换环境变量:
export CC=/usr/bin/gcc-9 export CXX=/usr/bin/g++-9
之后重新执行上述pip安装命令。
3. 清理conda缓存并重建环境
conda缓存可能存在损坏,清理后重建环境:
conda clean --all conda create -n pyg_env python=3.10 conda activate pyg_env conda install pytorch==1.12.1 cpuonly -c pytorch pip install torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://data.pyg.org/whl/torch-1.12.1+cpu.html
4. 补充系统底层依赖
段错误可能源于缺少系统依赖,安装以下库:
sudo apt install libopenblas-dev liblapack-dev libeigen3-dev
内容的提问来源于stack exchange,提问作者Alex Davies
相关产品推荐
相关产品推荐

