8

如果您使用 -i 选项调用 cpython 解释器,它将在完成任何命令或脚本运行后进入交互模式。有没有办法在程序中让解释器即使没有给出 -i 也能做到这一点?明显的用例是在发生异常情况时通过交互检查状态进行调试。

4

4 回答 4

14

你想要代码模块

#!/usr/bin/env python

import code    
code.interact("Enter Here")
于 2009-02-26T17:25:18.420 回答
5

设置 PYTHONINSPECT 环境变量。这也可以在脚本本身中完成:

import os
os.environ["PYTHONINSPECT"] = "1"

对于调试意外异常,您还可以使用这个不错的配方http://code.activestate.com/recipes/65287/

于 2009-02-26T19:06:18.520 回答
3

在另一个答案中提到的食谱sys.excepthook使用, 听起来像你想要的。否则,您可以code.interact在程序退出时运行:

import code
import sys
sys.exitfunc = code.interact
于 2009-02-26T23:49:05.157 回答
1

我所知道的最好的方法是:

from IPython import embed
embed()

它允许访问当前范围内的变量,并为您带来 IPython 的全部功能。

于 2013-08-01T08:48:04.023 回答