如何解决ipython TerminalInteractiveShell和InteractiveShell有什么区别?
ipython documentation有很多可配置的选项。有些用于TerminalInteractiveShell
,有些用于InteractiveShell
。当我从命令行生成ipython_config.py
时,某些选项出现在文档中的一个中,而另一个出现在文档中。这有什么押韵或原因吗?两者都有的原因是什么?
解决方法
查看文档中的 list of modules,我们有
IPython.core.application
:IPython 应用程序。
IPython.core.interactiveshell
:主要的 IPython 类。
IPython.terminal.ipapp
:命令行的应用程序对象
ipython
计划。
IPython.terminal.interactiveshell
:IPython 终端接口使用
prompt_toolkit
InteractiveShell
是基本的 iPython shell 类,可以为不同的目的进行子类化。 TerminalInteractiveShell
就是这样一个特定的子类。它继承自InteractiveShell
,是我们在命令行中输入“ipython”时运行的特定shell。
可用于 TerminalInteractiveShell
但不可基础 InteractiveShell
的配置选项的一个示例是 confirm_exit
。这似乎是合理的,因为“你真的想退出吗”这个问题只有当有人在 shell 内按下 Control-D 时才真正相关。
实际上,如果您只是想配置命令行 ipython shell,更改选项的 InteractiveShell
或 TerminalInteractiveShell
版本都可以,因为 TerminalInteractiveShell
继承了基类的选项.但是,只编辑更具体的 TerminalInteractiveShell
更安全,因为基类仍在非终端情况下使用,更改其设置可能会导致出现意外行为。例如:
-
This Jupyter Notebook tutorial 使用
InteractiveShell
将笔记本代码单元转换为可执行的 Python -
This test class 在 ipython 源代码中为每个测试创建一个 shell(继承自普通的
InteractiveShell
)。
希望这对您有所帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。