使用 Python 调试器时如何指定模块 (-m)?
How to specify a module (-m) when using the Python debugger?
我想调试一个 Python 模块,我必须像这样执行它:
python -m ModuleA.ModuleB <someargs>
如何在 VS Ccode 的 launch.json
上配置 -m
开关? args
部分用于正在执行的脚本,而不是 python 二进制文件本身。
Python 启动配置接受 "module"
而不是 "program"
。它在 debugging specific Python applications such as Flask, Django, and Scrapy. Here is the sample for a Flask app 中使用,看起来与您想要的相似:
{
"name": "Python: Flask",
"type": "python",
"request": "launch",
"module": "flask", # <---------------------
"env": {
"FLASK_APP": "app.py"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
],
...
}
As you can see, this configuration specifies "env": {"FLASK_APP": "app.py"}
and "args": ["run", "--no-debugger","--no-reload"]
. The "module": "flask"
property is used instead of program
.
因此,假设此示例工作区的文件夹 Q
包含 ModuleA.ModuleB
:
$ tree .
.
├── Q
│ └── ModuleA
│ ├── __init__.py
│ └── ModuleB.py
└── .vscode
└── launch.json
其中 ModuleB 是:
import sys
if __name__ == "__main__":
print(*sys.argv)
您可以将此 launch.json 配置指定为:
{
"name": "run-specific-module",
"type": "python",
"request": "launch",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}/Q",
"module": "ModuleA.ModuleB",
"args": [
"123",
"abc",
]
},
运行 在终端中给出此输出:
$ cd /path/to/Q ; env /path/to/python /path/to/.vscode/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/launcher 37343 -- -m ModuleA.ModuleB 123 abc
('/path/to/Q/ModuleA/ModuleB.py', '123', 'abc')
这应该是一样的:
$ python -m ModuleA.ModuleB 123 abc
('/path/to/Q/ModuleA/ModuleB.py', '123', 'abc')
我想调试一个 Python 模块,我必须像这样执行它:
python -m ModuleA.ModuleB <someargs>
如何在 VS Ccode 的 launch.json
上配置 -m
开关? args
部分用于正在执行的脚本,而不是 python 二进制文件本身。
Python 启动配置接受 "module"
而不是 "program"
。它在 debugging specific Python applications such as Flask, Django, and Scrapy. Here is the sample for a Flask app 中使用,看起来与您想要的相似:
{
"name": "Python: Flask",
"type": "python",
"request": "launch",
"module": "flask", # <---------------------
"env": {
"FLASK_APP": "app.py"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
],
...
}
As you can see, this configuration specifies
"env": {"FLASK_APP": "app.py"}
and"args": ["run", "--no-debugger","--no-reload"]
. The"module": "flask"
property is used instead ofprogram
.
因此,假设此示例工作区的文件夹 Q
包含 ModuleA.ModuleB
:
$ tree .
.
├── Q
│ └── ModuleA
│ ├── __init__.py
│ └── ModuleB.py
└── .vscode
└── launch.json
其中 ModuleB 是:
import sys
if __name__ == "__main__":
print(*sys.argv)
您可以将此 launch.json 配置指定为:
{
"name": "run-specific-module",
"type": "python",
"request": "launch",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}/Q",
"module": "ModuleA.ModuleB",
"args": [
"123",
"abc",
]
},
运行 在终端中给出此输出:
$ cd /path/to/Q ; env /path/to/python /path/to/.vscode/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/launcher 37343 -- -m ModuleA.ModuleB 123 abc
('/path/to/Q/ModuleA/ModuleB.py', '123', 'abc')
这应该是一样的:
$ python -m ModuleA.ModuleB 123 abc
('/path/to/Q/ModuleA/ModuleB.py', '123', 'abc')