重要
本文档涵盖 IPython 6.0 及更高版本。从 6.0 版本开始,IPython 不再支持与低于 3.3 的 Python 版本(包括所有版本的 Python 2.7)兼容。
如果您正在寻找与 Python 2.7 兼容的 IPython 版本,请使用 IPython 5.x LTS 版本并参考其文档(LTS 是长期支持版本)。
IPython 配置系统概述¶
本节介绍 IPython 配置系统。它基于 traitlets.config
;有关整体架构的更多信息,请参阅该文档。
配置文件位置¶
那么您应该将配置文件放在哪里?IPython 使用“配置文件”进行配置,默认情况下,所有配置文件都将存储在所谓的“IPython 目录”中。此目录的位置由以下算法确定
如果给出了
ipython-dir
命令行标志,则使用其值。如果没有,则使用
IPython.paths.get_ipython_dir()
返回的值。此函数将首先查看IPYTHONDIR
环境变量,然后默认为~/.ipython
。对IPYTHON_DIR
环境变量的历史支持将在未来版本中删除。
对于大多数用户,配置目录将是 ~/.ipython
。
以前版本的 IPython 在 Linux 上会使用 XDG 配置目录,默认创建 ~/.config/ipython
。我们决定返回 ~/.ipython
以在系统之间保持一致性。如果 IPython 找到 XDG 位置,它将发出警告,并且如果那里还没有目录,它将把它移动到新位置。
一旦确定了 IPython 目录的位置,您需要知道您正在使用哪个配置文件。对于具有单个配置的用户,这将只是“default”,并且将位于 <IPYTHONDIR>/profile_default
中。
接下来你需要了解的是如何命名你的配置文件。基本思想是每个应用程序都有其自己的默认配置文件名。由ipython命令行程序使用的默认名称是ipython_config.py
,所有IPython应用程序都将使用此文件。IPython内核将在ipython_config.py
之后加载其自己的配置文件。要加载特定配置文件而不是默认配置文件,可以通过config_file
命令行标志覆盖名称。
要生成默认配置文件,请执行
$ ipython profile create
你将在profile_default
下的IPython目录中拥有一个默认的ipython_config.py
。
注意
IPython配置选项区分大小写,IPython无法捕获错误命名的键或无效值。
默认情况下,IPython还将忽略任何无效配置文件。
5.0版本中添加: IPython可以配置为在配置文件无效时中止。为此,请将环境变量IPYTHON_SUPPRESS_CONFIG_ERRORS
设置为'1'
或'true'
定位这些文件¶
从命令行,你可以使用以下命令快速找到IPYTHONDIR或特定配置文件
$ ipython locate
/home/you/.ipython
$ ipython locate profile foo
/home/you/.ipython/profile_foo
这些映射到实用程序函数:IPython.paths.get_ipython_dir()
和IPython.paths.locate_profile()
。
配置文件¶
配置文件是一个包含配置和运行时文件的目录,例如日志、并行应用程序的连接信息以及你的IPython命令历史记录。
其思想是用户通常希望为不同目的维护一组配置文件:一个用于使用NumPy和SciPy进行数值计算,另一个用于使用SymPy进行符号计算。配置文件可以轻松地为每个目的保留单独的配置文件、日志和历史记录。
让我们首先展示如何使用配置文件
$ ipython --profile=sympy
这告诉ipython命令行程序从“sympy”配置文件获取其配置。各种配置文件的文件名不会改变。唯一的区别是配置文件的命名方式很特别。在上面的情况下,“sympy”配置文件表示在<IPYTHONDIR>/profile_sympy
中查找ipython_config.py
。
一般模式是这样的:只需使用以下命令创建一个新配置文件
$ ipython profile create <name>
它会向你的IPython目录添加一个名为profile_<name>
的目录。然后,你可以通过向命令行选项添加--profile=<name>
来加载此配置文件。所有IPython应用程序都支持配置文件。
IPython扩展了Python文件的配置加载器,以便你可以从另一个配置文件继承配置。为此,在你的Python配置文件中使用类似于以下内容的行
load_subconfig('ipython_config.py', profile='default')