断点()默认情况下使用ipdb

时间:2018-01-22 11:22:12

标签: python python-3.x ipdb python-3.7

是否有可能安装 ipdb (或其他一些编写的包以明确地执行此操作)将导致breakpoint()运行 ipdb 而不是 pdb 没有将sys.breakpointhook()绑定到 ipdb

https://www.python.org/dev/peps/pep-0553/

我不是在询问ipdb是否会这样做,或者是否会这样做,但是如果它可以编码那么。我知道我可以设置环境变量PYTHONBREAKPOINT=ipdb.set_trace。问题是,是否可以通过安装ipdb来触发此行为。

2 个答案:

答案 0 :(得分:1)

在安装过程中,可以通过编程方式在正确的目录中创建usercustomize.pysitecustomize.py,并在其中更改os.environ['PYTHONBREAKPOINT']

这些模块在启动序列的早期由site.py导入,适合这种自定义。就个人而言,我从来没有见过一个包改变/创建这些文件所以我不希望ipdb做到这一点。

答案 1 :(得分:-2)

一种方法是在.pth目录中创建site-packages文件。如果该文件中的行以import语句开头,则该行正在执行。在该文件中,您可以修补sys.breakpointhook

示例:

echo "import random; print('hello')" > path/to/lib/python3.7/site-packages/test.pth
$ python -c ''
hello