重要

本文档涵盖 IPython 6.0 及更高版本。从 6.0 版本开始,IPython 不再支持与低于 3.3 的 Python 版本(包括所有版本的 Python 2.7)兼容。

如果您正在寻找与 Python 2.7 兼容的 IPython 版本,请使用 IPython 5.x LTS 版本并参阅其文档(LTS 是长期支持版本)。

新的 IPython 控制台词法分析器

在 2.0.0 版本中添加。

IPython 控制台词法分析器已经过重写,现在支持回溯和定制的输入/输出提示。现在可以在 IPython.lib.lexers 处获得一整套词法分析器。其中包括

IPythonLexer 和 IPython3Lexer

用于纯 IPython(python + magic/shell 命令)的词法分析器

IPythonPartialTracebackLexer 和 IPythonTracebackLexer

通过关键字 python3 支持 2.x 和 3.x。部分回溯词法分析器读取回溯中显示的 Python 代码之外的所有内容。完整词法分析器将部分词法分析器与 IPython 词法分析器结合起来。

IPythonConsoleLexer

用于 IPython 控制台会话的词法分析器,支持回溯。通过关键字 python3 支持 2.x 和 3.x。

IPyLexer

一个友好的词法分析器,它检查文本的第一行,并根据该行决定使用 IPython 词法分析器还是 IPython 控制台词法分析器。通过关键字 python3 支持 2.x 和 3.x。

以前,IPythonConsoleLexer 类在 IPython.sphinxext.ipython_console_hightlight 处可用。它以 ipython 的名称插入到 Pygments 的可用词法分析器列表中。应该提一下,这个名称不准确,因为 IPython 控制台会话与 IPython 代码(它本身是 Python 语言的超集)不同。

现在,Sphinx 扩展将两个控制台词法分析器插入到 Pygments 可用词法分析器列表中。两者都是 IPyLexer 实例,名称分别为:ipythonipython3。尽管名称可能会令人困惑(如上所述),但继续使用它们部分是为了保持向后兼容性和帮助典型用法。如果某个项目需要让 Pygments 了解的不仅仅是 IPyLexer 类,那么就不要让 IPyLexer 类在名称 ipython 下可用,而应使用 ipy 或其他非冲突的值。

诸如

.. code-block:: ipython

    In [1]: 2**2
    Out[1]: 4

之类的代码块将继续像以前一样工作,但现在,它们还将正确突出显示回溯。对于纯 IPython 代码,相同的词法分析器也将起作用

.. code-block:: ipython

    x = ''.join(map(str, range(10)))
    !echo $x

由于该代码块的第一行没有以标准 IPython 控制台提示符开头,因此整个代码块被假定完全由 IPython 代码组成。