osx 上的 pytorch(仅 cpu)失败,未找到符号

pytorch (cpu only) on osx fails with symbol not found

我正在尝试开始使用 PyTorch - 在 mac osx 计算机上。但是,基本步骤失败:

from torch_sparse import coalesce, SparseTensor

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-1-dad8246d5249> in <module>
----> 1 from torch_sparse import coalesce, SparseTensor

/usr/local/Caskroom/miniconda/base/envs/my_conda_env/lib/python3.8/site-packages/torch_sparse/__init__.py in <module>
     10         '_saint', '_padding'
     11 ]:
---> 12     torch.ops.load_library(importlib.machinery.PathFinder().find_spec(
     13         library, [osp.dirname(__file__)]).origin)
     14 

/usr/local/Caskroom/miniconda/base/envs/my_conda_env/lib/python3.8/site-packages/torch/_ops.py in load_library(self, path)
    102             # static (global) initialization code in order to register custom
    103             # operators with the JIT.
--> 104             ctypes.CDLL(path)
    105         self.loaded_libraries.add(path)
    106 

/usr/local/Caskroom/miniconda/base/envs/my_conda_env/lib/python3.8/ctypes/__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error, winmode)
    371 
    372         if handle is None:
--> 373             self._handle = _dlopen(self._name, mode)
    374         else:
    375             self._handle = handle

OSError: dlopen(/usr/local/Caskroom/miniconda/base/envs/my_conda_env/lib/python3.8/site-packages/torch_sparse/_version.so, 6): Symbol not found: __ZN3c105ErrorC1ENS_14SourceLocationERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE
  Referenced from: /usr/local/Caskroom/miniconda/base/envs/my_conda_env/lib/python3.8/site-packages/torch_sparse/_version.so
  Expected in: flat namespace
 in /usr/local/Caskroom/miniconda/base/envs/my_conda_env/lib/python3.8/site-packages/torch_sparse/_version.so

我使用的conda环境是:

name: my_conda_env
channels:
  - pytorch
  - conda-forge
  - defaults
dependencies:
  - python>=3.8
  - pytorch
  - pytorch_geometric

并使用以下实例化它:

conda env create --force -f environment.yml

https://github.com/rusty1s/pytorch_sparse/issues/135

的确,https://github.com/conda-forge/pytorch_sparse-feedstock/issues/13就是问题所在 使用 pip https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html 手动安装 pytorch geometric 及其依赖项,例如 pytorch sparse https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html 是当前合适的解决方法

我在导入 torch_geometric 数据集时遇到了同样的问题: from torch_geometric.datasets import TUDataset

我的设置:Anaconda 环境中 Windows 上的火炬版本 1.11.0。我用 pip

安装了 torch-geometric

我通过卸载 torch-geometric 及其所有依赖项解决了这个问题: pip uninstall torch-geometric torch-scatter torch-sparse torch-cluster torch-spline-conv

通过使用以下命令检查安装在我的 anaconda 环境中的软件包,确保 torch-geometric 确实被卸载: conda list

原来我在我的 anaconda 环境中安装了这些软件包的多个版本。问题是,我用 cuda 安装了 torch-geometric,但后来我没有连接 gpu,我需要安装 cpu 版本。 pip install cpu version 没有删除已经存在的 gpu 版本,因此产生了冲突。

因此,在删除 torch-geometric 及其所有依赖项后,我使用 PyG documentation 了解 torch-geometric 及其依赖项的兼容版本:

最后,根据文档,我使用了这个命令:

pip install torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://data.pyg.org/whl/torch-1.11.0+cpu.html

为 torch==1.11.0 安装的依赖版本是:

torch-geometric==2.0.4

torch-cluster==1.6.0

torch-scatter==2.0.9

torch-sparse==0.6.13

torch-spline-conv==1.2.1