breakpoint()默认使用ipdb

问题描述 投票:7回答:2

是否有可能安装ipdb(或其他一些编写的代码来执行此操作)将导致breakpoint()运行ipdb而不是pdb而不将sys.breakpointhook()绑定到ipdb?

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

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

python python-3.x ipdb python-3.7
2个回答
1
投票

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

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


-2
投票

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

例:

echo "import random; print('hello')" > path/to/lib/python3.7/site-packages/test.pth
$ python -c ''
hello
© www.soinside.com 2019 - 2024. All rights reserved.