如何为 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}",
}
]
}
我发现 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}",
}
]
}