mypy守护进程持续崩溃求助:附报错回溯信息
mypy守护进程崩溃:AttributeError: 'NoneType' object has no attribute 'col_offset'
问题描述
使用mypy及VS Code的mypy扩展时,遭遇守护进程崩溃,报错回溯如下:
Traceback (most recent call last): File "mypy\dmypy_server.py", line 230, in serve File "mypy\dmypy_server.py", line 273, in run_command File "mypy\dmypy_server.py", line 332, in cmd_run File "mypy\dmypy_server.py", line 389, in check File "mypy\dmypy_server.py", line 424, in initialize_fine_grained File "mypy\build.py", line 180, in build File "mypy\build.py", line 256, in _build File "mypy\build.py", line 2680, in dispatch File "mypy\build.py", line 2838, in load_graph File "mypy\build.py", line 1909, in __init__ File "mypy\build.py", line 2070, in parse_file File "mypy\build.py", line 798, in parse_file File "mypy\parse.py", line 25, in parse File "mypy\fastparse.py", line 196, in parse File "mypy\fastparse.py", line 370, in visit File "mypy\fastparse.py", line 731, in visit_Module File "mypy\fastparse.py", line 409, in translate_stmt_list File "mypy\fastparse.py", line 370, in visit File "mypy\fastparse.py", line 744, in visit_FunctionDef File "mypy\fastparse.py", line 842, in do_func_def File "mypy\fastparse.py", line 481, in as_required_block File "mypy\fastparse.py", line 409, in translate_stmt_list File "mypy\fastparse.py", line 370, in visit File "mypy\fastparse.py", line 1020, in visit_AnnAssign File "mypy\fastparse.py", line 1645, in visit File "mypy\fastparse.py", line 1882, in visit_Subscript AttributeError: 'NoneType' object has no attribute 'col_offset'
已尝试mypy 0.960至0.971版本、VS Code mypy扩展0.2.0至0.2.1版本的多种组合,问题未解决。
排查与解决方法
定位出错代码
- 关闭VS Code的mypy守护进程,用命令行执行
mypy --no-incremental <你的项目路径>,禁用增量检查模式,通常会输出具体的错误文件和行号。 - 在VS Code设置中,将
mypy.fineGrained设为false,禁用细粒度检查,重新运行类型检查,获取更明确的报错位置。
- 关闭VS Code的mypy守护进程,用命令行执行
检查类型标注语法
重点排查函数内的变量标注(AnnAssign语句),尤其是带下标表达式的类型(如List[int]、Dict[str, Any]):- 检查是否有语法错误,比如漏写括号、未闭合的下标
- 确认类型别名是否已正确定义
- 排查嵌套下标表达式的合法性,比如
Tuple[str]需改为Tuple[str, ...]表示变长元组
临时规避方案
在项目的mypy.ini或pyproject.toml中添加配置,禁用mypy的快速解析器:[mypy] fastparse = false改用传统解析器可绕过该崩溃问题。
升级版本
升级mypy至最新稳定版(如1.5+),同时更新VS Code的mypy扩展到最新版本,新版本可能已修复该解析器bug。提交bug报告
若定位到稳定复现的代码片段,可整理为最小示例,提交至mypy官方仓库的issues中,附带版本信息和报错回溯。
内容的提问来源于stack exchange,提问作者vianmixt
相关产品推荐
相关产品推荐

