嵌入(创建)一个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()
另一答案
我已经有很长一段时间的代码,我希望你可以把它用。
要检查/使用变量,只是把它们变成当前的命名空间。作为一个例子,我可以在命令行访问var1
和var2
。
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
如何将Superset Apache嵌入到Flask Web应用程序中?