关于使用mmcv时解决ImportError: /xx/mmcv/_ext.cpython-39-x86_64-linux-gnu.so: undefined symbol: _ZN2at4**的方法

近期在医学图像分割验证模型性能工作中,需要安装mmcv,但是有报错

ImportError: /DATA/home/zyw/anaconda3/envs/ljh/lib/python3.9/site-packages/mmcv/_ext.cpython-39-x86_64-linux-gnu.so: undefined symbol: _ZN2at4_ops4view4callERKNS_6TensorEN3c108ArrayRefIlEE

中间过程中由于一开始安装的mmcv版本不同,这里报错无法识别的符号也不一样。

undefined symbol: _ZN2at4_ops4view4callERKNS_6TensorEN3c108ArrayRefIlEE

在网上找了很多可能解决问题的方法,但是也没有顺利解决,同时也遇见

AssertionError: MMCV==2.1.0 is used but incompatible. Please install mmcv>=[1, 1, 4], <=[1, 3, 0].

这类报错。

这类问题可能说明mmcv的版本和已经安装的cuda以及torch版本不兼容,总归来说,如果碰到上述的两种问题,可以尝试以下面的方式来解决。

首先使用以下命令先把自己下载过的mmcv卸载

pip uninstall mmcv

首先查看自己的CUDA和torch版本

python -c 'import torch;print(torch.__version__);print(torch.version.cuda)'

比如我的版本是

说明我的torch是1.8.0,CUDA版本是11.1

这里你可以先尝试用

https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html

/cu111/torch1.8.0/

按照你的这两个版本号修改链接查看

可以看到符合CUDA和torch版本的mmcv。

这里面有很多mmcv版本,但是不一定都会符合你的系统的需要如果下载的mmcv版本不正确可能会出现文章开头的不兼容问题。这时候再查看这类报错,可以看到系统要求

AssertionError: MMCV==2.1.0 is used but incompatible. Please install mmcv>=[1, 1, 4], <=[1, 3, 0].

mmcv>=[1, 1, 4], <=[1, 3, 0].我这里只有mmcv-full-1.3.0符合要求,可以直接运行脚本下载 

pip install mmcv-full==1.3.0 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html

/cu111/torch1.8.0/

这里的111和1.8.0按照你的实际情况修改,找到符合你系统的mmcv版本源,查看都有什么版本的mmcv根据系统要求再修改这条命令中的mmcv-full==1.3.0,我这里是mmcv-full==1.3.0而不是mmcv==1.3.0是因为版本源中直接用mmcv=x.x.x的只有2.0.0版本以上的,但是都不影响mmcv的使用。

版权声明:本文为博主作者:比我帅的都是渣男原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_45102124/article/details/135452873

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年5月6日
下一篇 2024年5月6日

相关推荐