运行 python 使用 VS 代码调试器在模块模式下的文件

Run python file in module mode using VS Code debugger

这是我的目录结构 -

src
    Main.py
    Message.py
    ...
    __init__.py

Main.py中,我有一个导入语句import src.Message。当我使用命令 python3 -m src.Main.py

自己执行文件时,这工作正常

但是,当我使用 VS 代码调试器执行相同操作时,我得到 ModuleNotFoundException

我假设这是因为调试器没有使用 -m 标志,所以我在 VS Code 调试器中使用了 运行 模块配置。

我在那里输入了src.Main.py,当程序启动时,调试器无法连接到它,几秒钟后我得到一个错误。

如果您要调试 VSCode 中的模块,则不包括 .py 文件扩展名(仅 src.Main)。在您的情况下,您的 launch.json 文件应如下所示:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Module",  // Whatever name you see fit!
            "type": "python",
            "request": "launch",
            "module": "src.Main"
        }
    ]
}

基于目录而不是模块名称的替代配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python Program",  // Whatever name you see fit!
            "type": "python",
            "request": "launch",
            "program": "${workspaceRoot}/src/Main.py",
            "console": "integratedTerminal"
        }
    ]
}

关于Python调试配置的更多信息,您可以查看this link

问题是 parent folder of 'src' 还没有添加到 sys.path

你运行python3 -m src.Main.pysrc's父文件夹的位置下,对吗?然后 src 的父文件夹的位置将添加到 sys.path.

因此,您需要配置launch.json文件,以便将相关路径添加到sys.path

如果您在 VSCode 中打开 src 的文件夹:

  "env": {
    "PYTHONPATH": "../"
  },

如果您在 VSCode 中打开 src's parent 的文件夹:

  "env": {
    "PYTHONPATH": "${workspaceFolder}"
  },

launch.json 看起来像这样:

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