在某些情况下,如果在Visual Studio Code中运行,代码需要以不同的方式运行。有人知道检测Python代码是否在Visual Studio Code调试器中运行的最有效方法吗?到目前为止,我能找到的最好的方法是使用:
import sys if 'debugpy' in sys.modules: print("Running in VS Code")
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中添加一个运行任务:
python myscript.py
python myscript.py --vscode
{ "label": "run", "command": "python", // or python3 "group": { "kind": "test", "isDefault": true }, "args": [ "${file}", "--vscode" ], "presentation": { "echo": true, "panel": "shared", "focus": true }, "problemMatcher": [] }
要运行代码,只需使用运行任务的快捷方式
2cmtqfgy2#
在vscode上,环境变量TERM_PROGRAM被设置为'vscode',您可以通过以下方式进行检查:
TERM_PROGRAM
import os if 'TERM_PROGRAM' in os.environ.keys() and os.environ['TERM_PROGRAM'] == 'vscode': print("Running in VS Code")
deikduxw3#
虽然我觉得@Eran的回答感觉最简洁,但这里有另一种方法:
if ('debugpy' in sys.modules \ and sys.modules['debugpy'].__file__.find('/.vscode/extensions/') > -1): print("Running in VS Code")
这将检测debugpy,并防止在另一个工具使用相同的debugpy命名空间时出现误报。
debugpy
3条答案
按热度按时间wfypjpf41#
我认为解决这个问题最优雅的方法是在vscode中设置一个运行任务,它运行带有额外命令行标志的Python脚本。
例如:
如果你调用脚本
python myscript.py
'不是vscode'
如果调用
python myscript.py --vscode
'vscode'
然后你可以在vscode中添加一个运行任务:
要运行代码,只需使用运行任务的快捷方式
2cmtqfgy2#
在vscode上,环境变量
TERM_PROGRAM
被设置为'vscode',您可以通过以下方式进行检查:deikduxw3#
虽然我觉得@Eran的回答感觉最简洁,但这里有另一种方法:
这将检测
debugpy
,并防止在另一个工具使用相同的debugpy
命名空间时出现误报。