解释vscode的launch.json以及python中的调试

问题描述 投票:0回答:1

从那时起,我就一直在与 vscode 中的 launch.json 作斗争。每次使用新项目(结构)时,我都不明白为什么它没有按照我想要的方式工作。 有人可以一般性地解释如何做到这一点吗?必备参数的含义及其工作原理。

作为示例,我想给出以下结构:

workpace
|   .vscode
│   ├── launch.json
│   └── settings.json
└── tree
    ├── branch1
         ├── leaf1
         └── leaf2
               ├── pyhelp.py
               └── pytest.py   

也许这会给它带来一些额外的复杂性,但假设我想调试一个 pytest。 所以,当 cd 进入 leaf2 并运行时

pytest pytest.py

从终端一切正常。 跑步

~/workspace/tree/branch1/leaf2$ python /pytest.py 

不起作用。 (ModuleNotFoundError:没有名为“leaf2.pyhelp”的模块)

在 VS Code 中打开 pytest.py 并使用调试器,也不会。第一个错误给了我

发生异常:ModuleNotFoundError

没有名为“leaf2.pyhelp”的模块

在我正在做的脚本中:

from leaf2.pyhelp import something

我认为子导入(leaf2.pyhelp)是一个问题。

from test import *

有效。

我的launch.json已经被来回改变了。我改变了很多,没有任何线索......显然。仍然是结构:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": false,
            "cwd": "${workspaceFolder}/tree/branch1/"
            }

我使用的诗歌环境未存储在存储库中。 其实我真的不知道问题出在哪里。不确定它是否是 launch.json 或者与 pytest 的不同处理有关。 当我在终端中调用“python script.py”时会发生什么,以及使用 pytest script.py 运行代码时会发生什么不同?当打印 sys.path 时,它们似乎有相同的目录需要检查......

非常感谢任何帮助!

python visual-studio-code debugging launch
1个回答
0
投票

您可以在工作空间下创建一个

.env
文件。

添加 leaf2 的 PYTHONPATH。然后将以下代码添加到您的

settings.json

"python.envFile": "${workspaceFolder}/.env",
© www.soinside.com 2019 - 2024. All rights reserved.