如何从Python代码进入REPL(读取、评估、打印、循环)
有没有办法让一个Python脚本在执行的某个任意时刻强制进入一个交互式命令行(REPL),即使这个脚本是从命令行启动的?
我正在写一个简单的绘图程序,想要从标准输入或者文件中读取数据,然后绘制图形,接着进入交互式命令行,这样就可以对图形进行自定义调整。
8 个回答
52
下面是你应该怎么做的(IPython 版本大于 v0.11):
import IPython
IPython.embed()
对于 IPython 版本小于等于 v0.11:
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell() # this call anywhere in your program will start IPython
你应该使用 IPython,它是 Python 交互式环境中的豪华车。你可以查看 http://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipython
根据文档的说明:
在科学计算的场景中,这个工具非常有用,因为你常常需要进行一些自动化的、计算量大的操作,然后停下来查看数据、图表等。打开一个 IPython 实例后,你可以完全访问你的数据和函数,等你完成交互操作后,可以继续执行程序(可能之后还会停下来多次,随时需要都可以)。
156
我经常使用这个:
def interact():
import code
code.InteractiveConsole(locals=globals()).interact()
137
你可以试试使用Python的交互模式:
python -i program.py
这样会先执行program.py里的代码,然后进入一个交互式的环境。在这个环境里,你在program.py的最上面定义的或者导入的东西都可以用。