前言
2024/10/15 上午9点vscode正常调试的py文件在当天11点之后时候,所有的py文件全部调试报ImportError: cannot import name 'Literal' from 'typing',按照这个报错搜索解决方案没有找到有效的解决方式
但是所有的解释均指向了 Literal是在Python 3.8中引入的新功能,并未包含在旧版本的typing模块中。因此,在较旧的Python版本中,无法从typing模块中导入Literal
所以这个时候考虑是vscode扩展中的python debugger调用了literal,而我本机只安装了python3.7.4作为内核,同时在调试代码的时候会调用debugger,从而导致了调试异常,出现了ImportError: cannot import name ‘Literal‘ from ‘typing‘这个报错
因此怀疑是debugger这个扩展自动更新了导致不支持python 3.8以下的版本了
解决方法
在VScode的扩展中找到python debugger>右键>选择安装特定版本...
不要选择2024.12.0以上的版本,python 3.7及更早的版本最搞只能选择2024.10.0的版本
同时如果和我一样长期使用python3.8以前的版本的话,为了以后不再出这个问题,建议把VScode拓展中的python debugger的自动更新也关掉(下图所示位置取消勾选)
现在python3.8以前的版本就正常调试了,又可以愉快的使用VS了
补充
Python3.8以后得版本其实也可以用这个2024.10.0版本的python debugger(太后续的版本就不确定了,暂时还没遇到)
如果是其他原因出现ImportError: cannot import name 'Literal' from 'typing'
那么可以考虑下面两个解决方案
- 升级python版本到3.8及以上
- python3.8以下使用typing_extensions模块(怎么安装库就不用我说了吧)
pip install typing_extensions