从Python 3.13开始,Python REPL是用Python编写的。这意味着如果你在调试REPL并在REPL的代码中添加了print
调用,然后运行REPL,调试打印将会出现在REPL中,就在你正在尝试调试的内容中间。这可能会变得相当混乱。
为了帮助缓解这个问题,REPL包含了一个简短的子模块trace
,它实现了trace
函数,可用于调试。它类似于print
函数,但不是写入控制台,而是写入文件。
然后可以使用环境变量PYREPL_TRACE
来设置trace.trace
写入的文件路径。实际上,我的做法是(感谢Łukasz)在两个相邻的终端中,在一个终端运行tail -f PATH_TO_FILE
,在另一个终端运行PYREPL_TRACE=PATH_TO_FILE python
,这会打开REPL并将跟踪实时打印到我的第二个终端窗口。
如果你安装了Python 3.13,你可以自己尝试一下: