VSCode(Cursor)中的Python代码调试

本文将会介绍如何在目前流行的IDE,包括VS Code, Cursor中进行Python代码调试。

Cursor是基于VS Code开发的,因此,在两者中调试Python代码是一致的。

笔者以如下的项目为例,演示如何在VS Code(Cursor)中进行Python代码调试。项目结构及文件说明如下:

1
2
3
4
5
6
7
├── math_op.py              //普通脚本调试
├── math_op_arg.py //带参数的脚本调试
├── math_op_env.py //带环境变量的脚本调试
└── src //项目工程调试
├── __init__.py
├── math_op_module.py
└── math_op_proj.py

使用Run and Debug -> create a launch.json file -> Python Debugger -> Python File,创建的launch.json文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"version": "0.2.0",
"configurations": [

{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}

普通脚本调试

math_op.py内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def math_op(a, b, op):
if op == '+':
result = a + b
elif op == '-':
result = a - b
elif op == '*':
result = a * b
elif op == '/':
result= a / b
return result

if __name__ == '__main__':
a = 10
b = 20
op = '+'
result = math_op(a, b, op)
print(result)

点击Run and Debug上方的Python Debugger: Current File按钮进行调试,界面如下:

普通调试

带环境变量的脚本调试

test_op_env.py内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import os

def math_op(a, b, op):
if op == '+':
result = a + b
elif op == '-':
result = a - b
elif op == '*':
result = a * b
elif op == '/':
result= a / b
return result

if __name__ == '__main__':
a = os.getenv('a')
b = os.getenv('b')
op = '+'
result = math_op(a, b, op)
print(result)

如果调试配置不变,则会报错,如下图:

上述调试过程报错的原因是在调试过程中,并未配置环境变量a和b。因此,修改launch.json文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"version": "0.2.0",
"configurations": [

{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"a": "10",
"b": "20"
}
}
]
}

此时能成功调试,如下图:

带环境变量的调试

注意,此时环境变量a和b的数据类型是字符串。

带参数的脚本调试

math_op_arg.py内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from argparse import ArgumentParser

def math_op(a, b, op):
if op == '+':
result = a + b
elif op == '-':
result = a - b
elif op == '*':
result = a * b
elif op == '/':
result = a / b
return result

if __name__ == '__main__':
parser = ArgumentParser()
parser.add_argument('--a', type=int, required=True)
parser.add_argument('--b', type=int, required=True)
parser.add_argument('--op', type=str, required=True)
args = parser.parse_args()
result = math_op(args.a, args.b, args.op)
print(result)

如果调试配置不变,则会报错,如下:

调试过程中报错的原因是没有配置脚本参数,修改launch.json文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"version": "0.2.0",
"configurations": [

{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": ["--a", "10", "--b", "20", "--op", "+"]
}
]
}

此时能成功调试,如下图:

带参数的脚本调试

项目工程调试

以src模块为例,脚本src/math_op_module.py内容如下:

1
2
3
4
5
6
7
8
9
10
def math_op(a, b, op):
if op == '+':
result = a + b
elif op == '-':
result = a - b
elif op == '*':
result = a * b
elif op == '/':
result= a / b
return result

math_op_proj.py内容如下:

1
2
3
4
5
6
7
8
from src.math_op_module import math_op

if __name__ == '__main__':
a = 10
b = 20
op = '+'
result = math_op(a, b, op)
print(result)

src/math_op_module.py中设置断点,对math_op_proj.py进行调试。如果不修改调试配置文件,则会报错:

这是我们在对Python项目工程进行调试中经常会遇到的问题,即某个module不存在。修改launch.json文件如下,就能正常调试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"version": "0.2.0",
"configurations": [

{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
}
]
}

总结

关于更多在VS Code(Cursor)中的调试场景,请参考官方文档: https://vscode.js.cn/docs/python/debugging .

欢迎关注我的公众号NLP奇幻之旅,原创技术文章第一时间推送。

欢迎关注我的知识星球“自然语言处理奇幻之旅”,笔者正在努力构建自己的技术社区。


VSCode(Cursor)中的Python代码调试
https://percent4.github.io/VSCode(Cursor)中的Python代码调试/
作者
Jclian91
发布于
2025年4月27日
许可协议