在Python程序中嵌入(创建)交互式Python shell

时间:2011-04-08 16:08:47

标签: python

是否可以在Python程序中启动交互式Python shell?

我想使用这样一个交互式Python shell(在我的程序执行中运行)来检查一些程序内部变量。

5 个答案:

答案 0 :(得分:54)

code模块提供了一个交互式控制台:

import readline # optional, will allow Up/Down/History in the console
import code
variables = globals().copy()
variables.update(locals())
shell = code.InteractiveConsole(variables)
shell.interact()

答案 1 :(得分:17)

在ipython 0.13+中你需要这样做:

from IPython import embed

embed()

答案 2 :(得分:6)

我已经使用了很长时间的代码,希望你可以使用它。

要检查/使用变量,只需将它们放入当前命名空间即可。例如,我可以从命令行访问var1var2

var1 = 5
var2 = "Mike"
# Credit to effbot.org/librarybook/code.htm for loading variables into current namespace
def keyboard(banner=None):
    import code, sys

    # use exception trick to pick up the current frame
    try:
        raise None
    except:
        frame = sys.exc_info()[2].tb_frame.f_back

    # evaluate commands in current namespace
    namespace = frame.f_globals.copy()
    namespace.update(frame.f_locals)

    code.interact(banner=banner, local=namespace)


if __name__ == '__main__':
  keyboard()

如果您想严格调试应用程序,我高度建议使用IDE或pdb(python debugger)

答案 3 :(得分:5)

使用IPython,您只需致电:

from IPython.Shell import IPShellEmbed; IPShellEmbed()()

答案 4 :(得分:1)

另一个技巧(除了已经建议的那个)是打开一个交互式shell并导入你的(可能修改过的)python脚本。导入时,大多数变量,函数,类等(取决于整个事情是如何准备的)都可用,甚至可以从命令行以交互方式创建对象。因此,如果您有test.py文件,则可以打开Idle或其他shell,并键入import test(如果它位于当前工作目录中)。