按 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 键时,如何确保程序也 运行 是模块而不是我正在查看的文件?

经过一番研究,我找到了解决方案:

  1. 导航到调试菜单的右上部分,然后单击齿轮为该项目创建一个 launch.json 文件。这将用于配置 VS 代码。

  1. 如果还没有创建 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

  1. 只是使用这个答案对我不起作用,我得到了错误: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",
        }
    ]
}