是否有可能安装ipdb(或其他一些编写的代码来执行此操作)将导致breakpoint()
运行ipdb而不是pdb而不将sys.breakpointhook()
绑定到ipdb?
https://www.python.org/dev/peps/pep-0553/
我不是在问ipdb是否会这样做,或者是否会这样做,但是如果它可以编码那么。我知道我可以设置环境变量PYTHONBREAKPOINT=ipdb.set_trace
。问题是,是否可以通过安装ipdb
来触发此行为。
在安装过程中,可以通过编程方式在正确的目录中创建usercustomize.py
或sitecustomize.py
,并在那里更改os.environ['PYTHONBREAKPOINT']
。
这些模块在启动序列的早期由site.py
导入,适用于这种定制。就个人而言,我从来没有见过一个包改变/创建这些文件所以我不希望ipdb
做到这一点。
一种方法是在.pth
目录中创建site-packages
文件。如果该文件中的行以import
语句开头,则该行正在执行。在那个文件中你可以修补sys.breakpointhook
例:
echo "import random; print('hello')" > path/to/lib/python3.7/site-packages/test.pth
$ python -c ''
hello