重要
本文档涵盖 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 实例,名称分别为:ipython
和 ipython3
。尽管名称可能会令人困惑(如上所述),但继续使用它们部分是为了保持向后兼容性和帮助典型用法。如果某个项目需要让 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 代码组成。