从那时起,我就一直在与 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 时,它们似乎有相同的目录需要检查......
非常感谢任何帮助!
您可以在工作空间下创建一个
.env
文件。
添加 leaf2 的 PYTHONPATH。然后将以下代码添加到您的
settings.json
:
"python.envFile": "${workspaceFolder}/.env",