ipython TerminalInteractiveShell 和 InteractiveShell 有什么区别?
What is the difference between ipython TerminalInteractiveShell and InteractiveShell?
ipython documentation 有一长串可配置选项。一些用于 TerminalInteractiveShell
,一些用于 InteractiveShell
。当我从命令行生成 ipython_config.py
时,一些选项出现在文档中的一个选项和另一个选项中。这有什么韵律或理由吗?两者兼而有之的原因是什么?
查看文档中的list of modules,我们有
IPython.core.application
: An application for IPython.
IPython.core.interactiveshell
: Main IPython class.
IPython.terminal.ipapp
: The Application object for the command line
ipython
program.
IPython.terminal.interactiveshell
: IPython terminal interface using
prompt_toolkit
InteractiveShell
is the base iPython shell class, which can be subclassed for different purposes. TerminalInteractiveShell
就是这样一个特定的子class。它继承自 InteractiveShell
,并且是当我们在命令行中键入“ipython”时运行的特定 shell。
可用于 TerminalInteractiveShell
但 不适用于 基础 InteractiveShell
的配置选项的一个示例是 confirm_exit
。这似乎是合理的,因为“你真的想退出吗”问题只有在 shell.
中有人按下 Control-D 时才真正相关
实际上,如果您只是尝试配置命令行 ipython shell,更改选项的 InteractiveShell
或 TerminalInteractiveShell
版本会起作用,因为TerminalInteractiveShell
继承基础 class 的选项。但是,只编辑更具体的 TerminalInteractiveShell
更安全,因为基础 class 仍在非终端情况下使用,并且更改其设置可能会导致那里出现意外行为。例如:
This Jupyter Notebook tutorial 使用 InteractiveShell
将笔记本代码单元转换为可执行文件 Python
This test class 在 ipython 源代码中为每个测试创建一个 shell(继承自普通 InteractiveShell
)。
希望对您有所帮助!
ipython documentation 有一长串可配置选项。一些用于 TerminalInteractiveShell
,一些用于 InteractiveShell
。当我从命令行生成 ipython_config.py
时,一些选项出现在文档中的一个选项和另一个选项中。这有什么韵律或理由吗?两者兼而有之的原因是什么?
查看文档中的list of modules,我们有
IPython.core.application
: An application for IPython.
IPython.core.interactiveshell
: Main IPython class.
IPython.terminal.ipapp
: The Application object for the command lineipython
program.
IPython.terminal.interactiveshell
: IPython terminal interface using prompt_toolkit
InteractiveShell
is the base iPython shell class, which can be subclassed for different purposes. TerminalInteractiveShell
就是这样一个特定的子class。它继承自 InteractiveShell
,并且是当我们在命令行中键入“ipython”时运行的特定 shell。
可用于 TerminalInteractiveShell
但 不适用于 基础 InteractiveShell
的配置选项的一个示例是 confirm_exit
。这似乎是合理的,因为“你真的想退出吗”问题只有在 shell.
实际上,如果您只是尝试配置命令行 ipython shell,更改选项的 InteractiveShell
或 TerminalInteractiveShell
版本会起作用,因为TerminalInteractiveShell
继承基础 class 的选项。但是,只编辑更具体的 TerminalInteractiveShell
更安全,因为基础 class 仍在非终端情况下使用,并且更改其设置可能会导致那里出现意外行为。例如:
This Jupyter Notebook tutorial 使用
InteractiveShell
将笔记本代码单元转换为可执行文件 PythonThis test class 在 ipython 源代码中为每个测试创建一个 shell(继承自普通
InteractiveShell
)。
希望对您有所帮助!