debugging 检测Python是否在Visual Studio代码中运行

xeufq47z  于 2023-06-23  发布在  Python
关注(0)|答案(3)|浏览(167)

在某些情况下,如果在Visual Studio Code中运行,代码需要以不同的方式运行。
有人知道检测Python代码是否在Visual Studio Code调试器中运行的最有效方法吗?
到目前为止,我能找到的最好的方法是使用:

import sys
if 'debugpy' in sys.modules:
    print("Running in VS Code")
wfypjpf4

wfypjpf41#

我认为解决这个问题最优雅的方法是在vscode中设置一个运行任务,它运行带有额外命令行标志的Python脚本。
例如:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--vscode', action='store_true')

args = parser.parse_args()

if args.vscode:
    print("vscode")
else:
    print("not vscode")

如果你调用脚本python myscript.py
'不是vscode'
如果调用python myscript.py --vscode
'vscode'
然后你可以在vscode中添加一个运行任务:

{
    "label": "run",
    "command": "python", // or python3
    "group": {
        "kind": "test",
        "isDefault": true
    },
    "args": [
        "${file}",
        "--vscode"
    ],
    "presentation": {
        "echo": true,
        "panel": "shared",
        "focus": true
    },
    "problemMatcher": []
}

要运行代码,只需使用运行任务的快捷方式

2cmtqfgy

2cmtqfgy2#

在vscode上,环境变量TERM_PROGRAM被设置为'vscode',您可以通过以下方式进行检查:

import os
if 'TERM_PROGRAM' in os.environ.keys() and os.environ['TERM_PROGRAM'] == 'vscode':
    print("Running in VS Code")
deikduxw

deikduxw3#

虽然我觉得@Eran的回答感觉最简洁,但这里有另一种方法:

if ('debugpy' in sys.modules \
       and sys.modules['debugpy'].__file__.find('/.vscode/extensions/') > -1):
    print("Running in VS Code")

这将检测debugpy,并防止在另一个工具使用相同的debugpy命名空间时出现误报。

相关问题