为每个断点导入 pprint()

Import pprint for every breakpoint()

每次我在 python 中使用 breakpoint() 时,我不可避免地最终会导入 pprint (from pprint import pprint)。有没有办法在达到 breakpoint() 时自动将 pprint 添加到命名空间?

Python 3.8.5

未完全解决此问题或早于 breakpoint()

实施的类似问题

制作一个这样的文件,如果需要,将其放入可安装包中,或者将其放在 PYTHONPATH 的某个位置:

$ cat mybreakpoint.py 
import pdb

def pprint_breakpoint():
    import pprint
    pdb.set_trace()

现在您可以使用环境变量 PYTHONBREAKPOINT 像这样自定义调试器范围:

$ PYTHONBREAKPOINT=mybreakpoint.pprint_breakpoint python3
Python 3.11.0b1 (main, May 18 2022, 12:50:35) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> breakpoint()
--Return--
> .../mybreakpoint.py(5)pprint_breakpoint()->None
-> pdb.set_trace()
(Pdb) pprint.pprint({"k2":"v2", "k1":"v1"})
{'k1': 'v1', 'k2': 'v2'}

就我个人而言,我总是将 IPython 安装到我的开发环境中,这样我就可以使用 PYTHONBREAKPOINT=IPython.embed 并默认在断点中获得更多 full-featured REPL,包括 IPython的漂亮打印机。