按 F5 使用 VS Code 调试 Python 模块
Debug Python module using VS Code by pressing F5
我的项目结构如下:
Project Folder
--setup.py
----Module Folder
------ __init__.py
------ __main__.py
我的 __main__.py
文件包含我的应用程序的入口点,安装文件配置如下:
from setuptools import setup
setup(name='my_project',
version='0.1.0',
packages=['my_project'],
entry_points={
'console_scripts': [
'my_project= my_project.__main__:main'
]})
这意味着我可以 运行 我的代码没有附加调试器使用:
python -m my_project
我尝试通过导航到我的 __main__.py
文件并按 F5 到 运行 来使用 VS Code 进行调试,但这不起作用并引发异常。如何在调试模式下将 Visual Studio 代码配置为 运行 此模块?
另外,当我按 F5 键时,如何确保程序也 运行 是模块而不是我正在查看的文件?
经过一番研究,我找到了解决方案:
- 导航到调试菜单的右上部分,然后单击齿轮为该项目创建一个
launch.json
文件。这将用于配置 VS 代码。
- 如果还没有创建
launch.json
文件,请在其中粘贴:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Module",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"pythonPath": "${config:python.pythonPath}",
"module": "my_project",
"cwd": "${workspaceRoot}",
}
]
}
我在这里找到了这段代码:https://github.com/DonJayamanne/pythonVSCode/issues/518#issuecomment-260838308
只是使用这个答案对我不起作用,我得到了错误:No module named my_project
但我找到了这个答案:https://github.com/DonJayamanne/pythonVSCode/issues/826
其中最后的评论告诉您将以下内容添加到配置中。
"env": {"PYTHONPATH":"${workspaceRoot}"},
这修复了错误,现在您可以按 F5 并调试您的模块。
已接受的答案对我不起作用 (VSCode 1.49.0),我收到一条错误消息:Invalid message: "program", "module", and "code" are mutually exclusive
.
删除 "program": "${file}",
行解决了问题。我认为这是有道理的,因为同时定义模块(带有隐含的入口点)和文件是多余的。
我的 launch.json
看起来像这样:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Module",
"type": "python",
"request": "launch",
"console": "integratedTerminal",
"module": "my_project",
}
]
}
我的项目结构如下:
Project Folder
--setup.py
----Module Folder
------ __init__.py
------ __main__.py
我的 __main__.py
文件包含我的应用程序的入口点,安装文件配置如下:
from setuptools import setup
setup(name='my_project',
version='0.1.0',
packages=['my_project'],
entry_points={
'console_scripts': [
'my_project= my_project.__main__:main'
]})
这意味着我可以 运行 我的代码没有附加调试器使用:
python -m my_project
我尝试通过导航到我的 __main__.py
文件并按 F5 到 运行 来使用 VS Code 进行调试,但这不起作用并引发异常。如何在调试模式下将 Visual Studio 代码配置为 运行 此模块?
另外,当我按 F5 键时,如何确保程序也 运行 是模块而不是我正在查看的文件?
经过一番研究,我找到了解决方案:
- 导航到调试菜单的右上部分,然后单击齿轮为该项目创建一个
launch.json
文件。这将用于配置 VS 代码。
- 如果还没有创建
launch.json
文件,请在其中粘贴:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Module",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"pythonPath": "${config:python.pythonPath}",
"module": "my_project",
"cwd": "${workspaceRoot}",
}
]
}
我在这里找到了这段代码:https://github.com/DonJayamanne/pythonVSCode/issues/518#issuecomment-260838308
只是使用这个答案对我不起作用,我得到了错误:
No module named my_project
但我找到了这个答案:https://github.com/DonJayamanne/pythonVSCode/issues/826 其中最后的评论告诉您将以下内容添加到配置中。"env": {"PYTHONPATH":"${workspaceRoot}"},
这修复了错误,现在您可以按 F5 并调试您的模块。
已接受的答案对我不起作用 (VSCode 1.49.0),我收到一条错误消息:Invalid message: "program", "module", and "code" are mutually exclusive
.
删除 "program": "${file}",
行解决了问题。我认为这是有道理的,因为同时定义模块(带有隐含的入口点)和文件是多余的。
我的 launch.json
看起来像这样:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Module",
"type": "python",
"request": "launch",
"console": "integratedTerminal",
"module": "my_project",
}
]
}