背景
使用mmdet3d调试项目,提示下面的错误
笔者使用的mmcv版本为mmcv-full=1.4.0
原因分析
- 从截图中可以看出错误出现在/usr/local/lib/python3.8/dist-packages/mmcv/utils/config.py的第496行:
text, _ = FormatCode(text, style_config=yapf_style, verify=True)
- 打开该文件,查找FormatCode函数,发现该函数来源于:
可见是yapf的问题,错误说的是FormatCode函数没有verify参数from yapf.yapflib.yapf_api import FormatCode
- 由以上分析可见,大概率是当前安装的yapf版本不对,笔者当前安装的yapf版本为0.40.2,查看yapf源码如下所示,发现0.40.2版本确实没有该参数:
- 因为当前的版本已经是最新版本,所以往前查看上一版本0.40.1,发现该版本有verify参数,所以将yapf降级到0.40.1即可(0.40.0也有,也是可以的)
解决方法
将yapf版本降级
# 0.40.1也可以
pip install yapf==0.40.0
后记
- 出现错误,按照提示分析找到解决方法是一个良好的习惯,希望每个人都养成好习惯,知其然更要知其所以然
- 至于为啥去掉verify参数,笔者觉得也没有必要去探究,如果真想进一步研究,可以在issue中搜索下,发现已经有人提出了相关问题(你会发现,你的一个疑问也是成千上万人的疑问),比如该提问[Question]: Why removing the verify module, how can this be substituted ?