暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VS Code 不支持 Debug Python 3.7 了怎么办?

alitrack 2024-11-11
3026

碰到一个遗留的老项目,基于Python 3.7开发,需要增加些功能,尝试debug的时候, VS Code提示需要Python 3.8 以上版本,问是否要切换, 放弃切换,继续使用的时候报错,

  File "/Users/m2max/.vscode/extensions/ms-python.debugpy-2024.13.2024103001-darwin-arm64/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py", line 4, in <module>
    from typing import Tuple, Literal
ImportError: cannot import name 'Literal' from 'typing' (/Users/m2max/.pyenv/versions/3.7.17/lib/python3.7/typing.py)

官网给出的关于插件不同版本对Python版本支持情况

Python versionLatest supported Python Debugger extension versiondebugpy version
2.7, >= 3.52023.1.XXX1.5.1
>= 3.72024.0.XXX1.7.0
>= 3.82024.2.XXX1.8.1

我的插件版本

VS Code Python Debugger 插件

从上面的信息看,我似乎该降低插件版本,并按官方的提醒来禁止自动更新,

注意:一旦你在 VS Code 中安装了较旧版本的 Python 调试器扩展,你可能需要通过在 settings.json 文件中更改 "extensions.autoUpdate" 设置的值来禁用自动更新。

网上给的方案,多是降低debugpy的版本, 今天尝试一个不一样的方案。

回到前面的报错,网上搜索了下,

错误原因Literal
是在Python 3.8 版本中引入的新功能,因此无法在 Python 3.7 中直接使用。

解决办法:通过安装typing_extensions
模块来解决这个问题。这个模块提供了一些在Python标准库typing
模块中未提供的新类型和工具。

解决方案

尝试修改 debugpy 的代码, 根据报错,很容易定位到pydevd_plugin_utils.py

原来的代码是

原来的代码

修改为

替换后的代码
import sys
if sys.version_info[:2] >= (38):
    from typing import Literal
else:
    from typing_extensions import Literal

如果没有安装typing_extensions
, 记得安装它。

pip install typing_extensions

问题解决了

新版本插件可以debug Python 3.7 应用了

至于是否有别的错误,目前不得而知,等碰到了再说吧。

 


文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论