ImportError: _C.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at4_ops6narrow4callERKNS_6Ten

目录

一.问题描述        

二.解决方法

1.从源码编译

2.安装pytorch1.8.1需要的cuda11.1

3.升级为预编译Detectron2匹配的pytorch 1.10.0版本(推荐)


  ⚡插播一条老家自产的糖心苹果,多个品种,欢迎选购!有问题随时私信我⚡:

🍎🍎来自雪域高原的馈赠——海拔2000米的大凉山高原生态糖心苹果🍎🍎icon-default.png?t=M666https://blog.csdn.net/qq_15969343/article/details/126107252

一.问题描述        

        最近在使用Detectron2进行目标检测相关的工作,因为Ubuntu电脑上有之前cuda的安装包,偷了个懒,没有按照Detectron2、cuda、pytorch、python的对应关系:

        直接就使用该cuda(11.3)安装包进行cuda的安装,然后接着偷懒,发现Detectron2(最新的0.6)有已经有预编译的包(如果是自己从源码编译,大概率不会出现本文描述的错误,可以右上角关闭本文了),便直接使用pip进行Detectron2的安装:

python -m pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu113/torch1.10/index.html

        pytorch直接就使用了之前装的1.8.1(忘了1.8.1基于11.1.1):

WIN10安装Detectron2(0.1或0.4.1,基于Pytorch1.8.1、Cuda11.1.1)https://blog.csdn.net/qq_15969343/article/details/118417147?spm=1001.2014.3001.5502        装好之后,运行程序发生了如题的错误:

Traceback (most recent call last):
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/code.py", line 91, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_umd.py", line 198, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/media/jayce/Disk/Code/Python/detectron2_test/predict_image_ubuntu.py", line 20, in <module>
    from detectron2.engine import DefaultPredictor
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/engine/__init__.py", line 11, in <module>
    from .hooks import *
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/engine/hooks.py", line 22, in <module>
    from detectron2.evaluation.testing import flatten_results_dict
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/evaluation/__init__.py", line 2, in <module>
    from .cityscapes_evaluation import CityscapesInstanceEvaluator, CityscapesSemSegEvaluator
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/evaluation/cityscapes_evaluation.py", line 11, in <module>
    from detectron2.data import MetadataCatalog
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/data/__init__.py", line 4, in <module>
    from .build import (
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/data/build.py", line 13, in <module>
    from detectron2.structures import BoxMode
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/structures/__init__.py", line 3, in <module>
    from .image_list import ImageList
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/structures/image_list.py", line 8, in <module>
    from detectron2.layers.wrappers import shapes_to_tensor
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/layers/__init__.py", line 3, in <module>
    from .deform_conv import DeformConv, ModulatedDeformConv
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/layers/deform_conv.py", line 11, in <module>
    from detectron2 import _C
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
ImportError: /home/jayce/anaconda3/envs/detectron2/lib/python3.6/site-packages/detectron2/_C.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at4_ops6narrow4callERKNS_6TensorElll

        报错挺长,我们只需要关注最后一句并将其在Detectron2的github页面进行搜索,发现大部分产生undefined symbol: _ZN2at4_ops6narrow4callERKNS_6TensorElll的原因都是因为pytorch、cuda、Detectron2的版本不匹配导致:

         那么知道问题该如何解决呢?

二.解决方法

1.从源码编译

        Ubuntu用户相对简单,满足下述条件,一步一步来就行了:

 Windows用户不怕折腾的同学可以参考我之前的博客:

WIN10安装Detectron2(0.1或0.4.1,基于Pytorch1.8.1、Cuda11.1.1)https://blog.csdn.net/qq_15969343/article/details/118417147?spm=1001.2014.3001.5502

2.安装pytorch1.8.1需要的cuda11.1

        安装cuda的教程太多了,随便搜一个就行,注意版本要装cuda11.1即可。

3.升级为预编译Detectron2匹配的pytorch 1.10.0版本(推荐)

        自己从源码编译显然太麻烦了,安装cuda也麻烦,咱们还是升级pytorch吧,可是打开官网却发现没有1.10.0的下载链接:

历史版本是从1.9.0开始的,也没有1.10.0:

那可咋办?直接在torch仓库(https://download.pytorch.org/whl/cu113/torch_stable.html),找0.10.0的安装包呗:

然后选择对应的python(我这边是python3.6.3)版本下载进行离线安装,或者使用pip进行在线安装即可:

pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

装完之后,再次运行,成功输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任博啥时候能毕业?

有用的话,请博主喝杯咖啡吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值