你怎么能以编程方式告诉CPython解释器完成后进入交互模式?

时间:2009-02-26 17:21:57

标签: cpython python

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

4 个答案:

答案 0 :(得分:14)

您需要code module

#!/usr/bin/env python

import code    
code.interact("Enter Here")

答案 1 :(得分:5)

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

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

为了调试意外异常,您还可以使用这个漂亮的食谱http://code.activestate.com/recipes/65287/

答案 2 :(得分:3)

使用sys.excepthook的其他答案中提到的recipe,听起来就像你想要的那样。否则,您将在程序退出时运行code.interact

import code
import sys
sys.exitfunc = code.interact

答案 3 :(得分:1)

我知道的最好的方法是:

from IPython import embed
embed()

允许访问当前作用域中的变量,并为您带来IPython的全部功能。