通过按F5使用VS Code调试Python模块

时间:2018-11-10 00:50:40

标签: python visual-studio-code vscode-settings

我的项目结构如下:

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

我尝试通过使用VS Code进行调试,方法是导航至__main__.py文件并按F5键运行,但这无法正常工作并引发异常。如何配置Visual Studio Code在调试模式下运行此模块? 另外,如何确保程序也按模块运行而不是按F5时正在查看的文件?

2 个答案:

答案 0 :(得分:2)

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

  1. 导航至调试菜单的右上部分,然后单击齿轮以为此项目创建launch.json文件。这将用于配置VS Code。

Configure VS Code

  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键,您的模块将被调试。

答案 1 :(得分:2)

接受的答案对我不起作用(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",
        }
    ]
}