BitBucket出现Linting错误:TypeError: 'LinterStats'对象不可下标访问
问题根因
该TypeError: 'LinterStats' object is not subscriptable报错为pylint-fail-under工具与高版本pylint的接口不兼容导致:
pylint从2.12版本开始将原字典类型的stats属性重构为LinterStats类对象,不再支持["global_note"]这种字典下标访问方式;而旧版本的pylint-fail-under未适配该接口变更,即使代码评分达标也会在读取分数阶段触发类型错误。
排查步骤
- 执行
pip show pylint pylint-fail-under查看当前环境中两个工具的版本号 - 若pylint版本≥2.12,且pylint-fail-under版本≤0.3.0,即可确认是兼容问题
解决方案
三种方案任选其一即可:
- 锁定pylint到兼容旧版本
在依赖声明文件(requirements.txt、pyproject.toml等)中指定pylint版本低于2.12,示例配置:pylint<2.12 pylint-fail-under==0.3.0 - 升级pylint-fail-under到兼容版本
pylint-fail-under从0.4.0版本开始已经适配高版本pylint的接口,直接升级工具即可解决,安装命令:pip install pylint-fail-under>=0.4.0 - 替换为pylint原生参数实现校验
新版本pylint已经原生支持最低分校验能力,无需额外安装第三方工具,直接在pylint执行命令中添加--fail-under=8.0参数即可实现低于指定分数报错退出的效果。
内容的提问来源于stack exchange,提问作者Arjun A J
相关产品推荐
相关产品推荐

