可以在脚本中禁用python断点()吗(使用VSCode调试器)?

可以在脚本中禁用python断点()吗(使用VSCode调试器)?,python,python-3.x,vscode-debugger,Python,Python 3.x,Vscode Debugger,我正在尝试使用新的(python 3.7+)breakpoint()。在初始开发期间,我希望能够禁用脚本中的所有断点。这可能吗 我尝试在脚本顶部将PYTHONBREAKPOINT环境变量设置为0,但调试器仍然会在每次设置时停止。在初始化脚本之前是否必须设置env变量?还是需要设置为其他值 我正在Windows10上使用VSCode调试器,在虚拟环境中工作 import os os.environ['PYTHONBREAKPOINT'] = "0" a = 1

我正在尝试使用新的(python 3.7+)
breakpoint()
。在初始开发期间,我希望能够禁用脚本中的所有断点。这可能吗

我尝试在脚本顶部将PYTHONBREAKPOINT环境变量设置为0,但调试器仍然会在每次设置时停止。在初始化脚本之前是否必须设置env变量?还是需要设置为其他值

我正在Windows10上使用VSCode调试器,在虚拟环境中工作

    import os

    os.environ['PYTHONBREAKPOINT'] = "0"

    a = 1

    print(os.environ['PYTHONBREAKPOINT'])  # prints 0
    breakpoint()  # debugger still stops here

    b = 2
编辑:如果在命令行中使用pdb,断点将被禁用。因此,它与VSCode调试器相关
Edit2:似乎是特定于VSCode调试器的。接受的答案对我来说是可行的,但这意味着不能使用不同的开发和生产环境来抑制断点,必须更改代码。

您只需设置
sys.breakpointhook
,执行
breakpoint()
时调用该函数:

import sys

sys.breakpointhook = lambda *x: None  # function that does nothing

a = 1
breakpoint()
b = 2

但是breakpoint()文档特别指出“每次到达sys.breakpoint hook()时,都会重新解释PYTHONBREAKPOINT。这允许进程在程序执行期间更改其值,并让breakpoint()响应这些更改。”这一点很好。“特别是,对于[0]sys.breakpointhook(),它会立即返回None。”也许VSCode的调试器不知道这一点?是的,它似乎是VSCode。在脚本或sysyem中设置envvar,然后在命令行中打开这两个选项,这两个选项都适用于pdb,但都不适用于VSCode。这个答案目前还可以,所以我接受(尽管它会让mypy显示一个anoying错误!)我已经尝试将它设置为整数(0),但这不能在脚本中完成。我还刚刚手动设置了env var并重新打开了VSCode,但仍然存在相同的问题;也许这是VSCode的一个限制,也许它不能正确处理重新加载的环境变量?