如何从Python代码进入REPL(读取、评估、打印、循环)

139 投票
8 回答
54190 浏览
提问于 2025-04-15 14:10

有没有办法让一个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的最上面定义的或者导入的东西都可以用。

撰写回答