TypeError: FormatCode() got an unexpected keyword argument ‘verify‘

背景

使用mmdet3d调试项目,提示下面的错误

笔者使用的mmcv版本为mmcv-full=1.4.0

原因分析

  1. 从截图中可以看出错误出现在/usr/local/lib/python3.8/dist-packages/mmcv/utils/config.py的第496行:
    text, _ = FormatCode(text, style_config=yapf_style, verify=True)
    
  2. 打开该文件,查找FormatCode函数,发现该函数来源于:
     from yapf.yapflib.yapf_api import FormatCode
    
    可见是yapf的问题,错误说的是FormatCode函数没有verify参数
  3. 由以上分析可见,大概率是当前安装的yapf版本不对,笔者当前安装的yapf版本为0.40.2,查看yapf源码如下所示,发现0.40.2版本确实没有该参数:
    在这里插入图片描述
  4. 因为当前的版本已经是最新版本,所以往前查看上一版本0.40.1,发现该版本有verify参数,所以将yapf降级到0.40.1即可(0.40.0也有,也是可以的)
    在这里插入图片描述

解决方法

将yapf版本降级

# 0.40.1也可以
pip install yapf==0.40.0

后记

  1. 出现错误,按照提示分析找到解决方法是一个良好的习惯,希望每个人都养成好习惯,知其然更要知其所以然
  2. 至于为啥去掉verify参数,笔者觉得也没有必要去探究,如果真想进一步研究,可以在issue中搜索下,发现已经有人提出了相关问题(你会发现,你的一个疑问也是成千上万人的疑问),比如该提问[Question]: Why removing the verify module, how can this be substituted ?
  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值