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