嵌入(创建)一个Python程序中的交互式Python外壳

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入(创建)一个Python程序中的交互式Python外壳相关的知识,希望对你有一定的参考价值。

是否有可能启动一个Python程序内的交互式Python的壳呢?

我想用这样的交互式Python外壳(这是我的程序的执行中运行),以检查某些程序内部变量。

答案

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()
另一答案

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

from IPython import embed

embed()
另一答案

我已经有很长一段时间的代码,我希望你可以把它用。

要检查/使用变量,只是把它们变成当前的命名空间。作为一个例子,我可以在命令行访问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)

另一答案

使用IPython的,你只需要调用:

from IPython.Shell import IPShellEmbed; IPShellEmbed()()
另一答案

(已经建议除了那些)另一个窍门是打开一个交互式shell和进口的(也许修改)python脚本。一旦进口,大部分的变量,函数,类等等(取决于整个事情是怎么准备)是可用的,你甚至可以从交互式命令行创建对象。所以,如果你有一个test.py文件,你可以打开空闲或其他shell,然后键入import test(如果是在当前工作目录)。

以上是关于嵌入(创建)一个Python程序中的交互式Python外壳的主要内容,如果未能解决你的问题,请参考以下文章

如何在未安装 python 的系统上嵌入 python 代码来执行 C++ 代码

C++ 中的嵌入式 python:importerror importing numpy.core.multiarray

python017 Python3 模块

如何将Superset Apache嵌入到Flask Web应用程序中?

在嵌入式linux上使用python可以套接字,绑定行为不端

在 C++ 中扩展嵌入式 Python - 设计与 C++ 实例交互