如何为 Python 设置 VS Code 以正确地 launch/debug 单个文件,以便尊重相对导入?

How do I set up VS Code for Python to correctly launch/debug individual files such that relative imports are respected?

我发现 this answer 对于理解 Python 中的相对导入非常有用。但是我发现很难让 VS Code 的“当前文件”很好地处理这个,因为它直接使用 ${file}.

启动文件

为了总结上述答案,假设我们有这样的结构:

mymod/
    __init__.py
    apple.py
    orange.py

如果 orange.py 从 apple.py 导入一些东西:

from .apple import apple_function

然后 运行 orange.py 作为没有 ImportError 的脚本的正确方法是使用包含 mymod 的目录中的以下命令:

python -m mymod.orange

目前,我在终端中手动输入与上述类似的命令,该命令有效,但我更喜欢使用键盘快捷键,无论文件名如何,它都可以工作,并且可以节省我的输入时间。

有什么我可以添加到 launch.json 的配置,可以像上面那样为每个特定文件自动启动 python 吗?

使用扩展 Command Variable

中的命令 extension.commandvariable.file.relativeDirDots
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Module",
      "type": "python",
      "request": "launch",
      "console": "integratedTerminal",
      "module": "${command:extension.commandvariable.file.relativeDirDots}.${fileBasenameNoExtension}",
    }
  ]
}