在IPython中嵌入式交互式shell

时间:2011-03-28 23:48:07

标签: python embed ipython

在切换到IPython v0.11(使用Python 2.6.1)之前,可以使用例如this嵌入交互式IPython shell,例如

from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell() # this call anywhere in your program will start IPython

“嵌入式shell已被重构为 InteractiveShell 的真正独立子类,名为 InteractiveShellEmbed 。所有嵌入逻辑都已从基类中取出并放入嵌入式子类“(见herehere)。

我理解它的方式你现在应该可以通过

简单地启动一个控制台
import IPython
IPython.embed()

然而,这引起了

  

TraitError:InteractiveShellEmbed实例的'exit_msg'特征必须是字符串,但指定了u''的值。

如果我们通过

传递exit_msg的字符串
IPython.embed(exit_msg='Whatever')

然后它引发了不同的错误

  

AttributeError:'InteractiveShellEmbed'对象没有属性'set_completer'

有没有人遇到过这个问题?否则这可能是一个错误,因为它毕竟是开发人员版本。

2 个答案:

答案 0 :(得分:9)

这些天(3.0+)你需要做的就是:

from IPython import embed; embed()

如果你的意思是在IPython中(递归地)嵌入另一个IPython shell,很长一段时间不支持这个,但去年修补了这个问题。

答案 1 :(得分:3)

github wiki上有specific instructions

from IPython.frontend.terminal.ipapp import TerminalIPythonApp
app = TerminalIPythonApp.instance()
app.initialize(argv=[]) # argv=[] instructs IPython to ignore sys.argv
app.start()