重要

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

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

IPython 配置简介

设置可配置选项

IPython 的许多类具有可配置属性(有关列表,请参阅 IPython 选项)。可以通过多种方式对其进行配置。

Python 配置文件

要创建空白配置文件,请运行

ipython profile create [profilename]

如果您省略配置文件名称,则将为 default 配置文件创建文件(请参阅 配置文件)。这些文件通常位于 ~/.ipython/profile_default/ 中,并且会被命名为 ipython_config.py,出于历史原因,您还可能会找到以 IPython 前缀而不是 Jupyter 命名的文件:ipython_notebook_config.py 等。ipython_config.py 中的设置适用于所有 IPython 命令。

默认情况下,配置文件是可执行任意代码的完整 Python 脚本,主要用法是在配置文件中存在的配置对象 c 上设置值。

然后,您可以像这样配置类属性

c.InteractiveShell.automagic = False

小心拼写错误——拼写错误的名称将被简单地忽略,不会出现错误。

要添加到可能已经在其他地方定义或具有默认值的集合中,可以使用列表、字典和集合上的方法:追加、扩展、prepend()(类似于扩展,但位于前面)、添加和更新(适用于字典和集合)

c.InteractiveShellApp.extensions.append('Cython')

在 2.0 版本中添加: 用于配置值的列表、字典和集合方法

配置文件示例

# sample ipython_config.py

c.TerminalIPythonApp.display_banner = True
c.InteractiveShellApp.log_level = 20
c.InteractiveShellApp.extensions = [
    'myextension'
]
c.InteractiveShellApp.exec_lines = [
    'import numpy',
    'import scipy'
]
c.InteractiveShellApp.exec_files = [
    'mycode.py',
    'fancy.ipy'
]
c.InteractiveShell.colors = 'LightBG'
c.InteractiveShell.xmode = 'Context'
c.TerminalInteractiveShell.confirm_exit = False
c.TerminalInteractiveShell.editor = 'nano'

c.PrefilterManager.multi_line_specials = True

c.AliasManager.user_aliases = [
 ('la', 'ls -al')
]

JSON 配置文件

在配置的可执行性可能存在问题或需要以编程方式修改配置的情况下,IPython 还通过 .json 配置文件支持有限的一组功能。

您可以通过 JSON 对象定义大多数配置选项,其层次结构表示您通常在 c 上设置的值对象 .py 配置文件。以下 ipython_config.json 文件

{
    "InteractiveShell": {
        "colors": "LightBG",
    },
    "InteractiveShellApp": {
        "extensions": [
            "myextension"
        ]
    },
    "TerminalInteractiveShell": {
        "editor": "nano"
    }
}

等效于以下 ipython_config.py

c.InteractiveShell.colors = 'LightBG'
c.InteractiveShellApp.extensions = [
    'myextension'
]
c.TerminalInteractiveShell.editor = 'nano'

命令行参数

可以使用此语法从命令行设置每个可配置值

ipython --ClassName.attribute=value

许多常用选项具有简短的别名和标志,例如 --matplotlib(与 matplotlib GUI 事件循环集成)或 --pdb(异常的自动死后调试)。

要查看所有这些缩写选项,请运行

ipython --help
jupyter notebook --help
# etc.

以任何格式在命令行中指定的选项将覆盖在配置文件中设置的选项。

配置魔术

还可以使用魔术命令从 IPython 内部修改配置

%config IPCompleter.greedy = True

目前,这仅影响当前会话 - 对配置所做的更改不会保存在任何地方。此外,某些选项仅在 IPython 启动时读取,因此无法像这样更改它们。

从 Python 运行 IPython

如果您正在使用 嵌入 IPython 从普通 python 文件启动 IPython,则可以通过创建 traitlets Config 对象并将其传递给 start_ipython 来设置配置选项,如下面的示例所示。

"""Quick snippet explaining how to set config options when using start_ipython."""

# First create a config object from the traitlets library
from traitlets.config import Config
c = Config()

# Now we can set options as we would in a config file: 
#   c.Class.config_value = value
# For example, we can set the exec_lines option of the InteractiveShellApp
# class to run some code when the IPython REPL starts
c.InteractiveShellApp.exec_lines = [
    'print("\\nimporting some things\\n")',
    'import math',
    "math"
]
c.InteractiveShell.colors = 'LightBG'
c.InteractiveShell.confirm_exit = False
c.TerminalIPythonApp.display_banner = False

# Now we start ipython with our configuration
import IPython
IPython.start_ipython(config=c)

配置文件

IPython 可以使用多个配置文件,具有单独的配置和历史记录。默认情况下,如果您未指定配置文件,IPython 始终在 default 配置文件中运行。要使用新配置文件

ipython profile create foo   # create the profile foo
ipython --profile=foo        # start IPython using the new profile

配置文件通常存储在 IPython 目录 中,但您也可以将配置文件保存在当前工作目录中,例如将其与项目一起分发。要在文件系统上查找配置文件目录

ipython locate profile foo

IPython 目录

默认情况下,IPython 将其文件(配置、命令历史记录和扩展)存储在目录 ~/.ipython/ 中。

IPYTHONDIR

如果设置,此环境变量应为目录的路径,IPython 将其用于用户数据。如果不存在,IPython 将创建它。

--ipython-dir=<path>

此命令行选项也可用于覆盖默认 IPython 目录。

要查看 IPython 在哪里查找 IPython 目录,请使用命令 ipython locate 或 Python 函数 IPython.paths.get_ipython_dir()

系统级配置

在为许多用户管理环境时,部署系统级 ipython 或 ipykernel 配置非常有用。在启动时,IPython 和 IPykernel 将在多个系统级位置搜索配置文件,主要是

  • /etc/ipython/

  • /usr/local/etc/ipython/

当全局安装是独立的 python 发行版时,它也可能在特定于发行版的特定位置搜索,例如

  • $ANACONDA_LOCATION/etc/ipython/

在这些位置,终端 IPython 将查找名为 ipython_config.pyipython_config.json 的文件,ipykernel 将查找 ipython_kernel_config.pyipython_kernel.json

按顺序加载配置文件,并与后续位置的配置合并,后续位置优先于之前的位置(也就是说,用户可以覆盖系统范围的配置选项)。

可以通过在调试模式下启动 ipython 来查看 IPython 查找配置文件的所有位置

$ ipython --debug -c 'exit()'

与 ipykernel 相同,但该命令目前处于阻塞状态,直到使用 Ctrl-\ 终止此进程。

$ python -m ipykernel --debug