每次启动IPython Notebook时,我运行的第一个命令是
%matplotlib inline
有什么方法可以更改配置文件,以便在启动IPython时自动处于此模式?
ipython --matplotlib
更好
每次启动IPython Notebook时,我运行的第一个命令是
%matplotlib inline
有什么方法可以更改配置文件,以便在启动IPython时自动处于此模式?
ipython --matplotlib
更好
Answers:
IPython的配置文件位于~/.ipython/profile_*
。默认配置文件称为profile_default
。在此文件夹中,有两个主要配置文件:
ipython_config.py
ipython_kernel_config.py
将matplotlib的内联选项添加到ipython_kernel_config.py
:
c = get_config()
# ... Any other configurables you want to set
c.InteractiveShellApp.matplotlib = "inline"
不鼓励使用%pylab
inline进行绘图。
它将各种不需要的杂项引入您的名称空间。
%matplotlib
另一方面,无需插入名称空间即可启用内联绘图。您需要进行显式调用才能导入matplotlib和numpy。
import matplotlib.pyplot as plt
import numpy as np
您现在拥有可重现的代码,应该完全克服显式输入导入的低价格。
%matplotlib
该后端便会生效),或者是否设置了默认后端并自动将其设置为可立即用于iPython环境。
matplotlib
vs 的编辑中pylab
,iPython使每次使用Profiles启动时自动执行任意python代码变得非常容易。我相信在个人资料中自动进行类似的导入操作是很常见的import numpy as np; import pandas as pd; import matplotlib.pyplot as plt
。NB:pylab
与并不相同pyplot
。我一定花了一个月才意识到这一点。
ipython_kernel_config.py
,其中包含此选项。新建一个配置文件(ipython profile create test
)以获取默认设置。
c.InteractiveShellApp.matplotlib = "inline"
我认为您可能想要从命令行运行以下命令:
ipython notebook --matplotlib=inline
如果您不想每次都在cmd行上键入它,则可以创建一个别名来替您完成。
--matplotlib inline
并删除--pylab内容。请参阅此有关ipython开发的原因:carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.html
matplotlib=inline
:无论您是否要使用matplotlib,它都会减慢您启动的每个内核的速度。
--matplotlib
或被--pylab
忽略。
%pylab
或%matplotlib
代替。
Jupyter 5.X
通过添加以下代码,此设置已被禁用
pylab = Unicode('disabled', config=True,
help=_("""
DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
""")
)
@observe('pylab')
def _update_pylab(self, change):
"""when --pylab is specified, display a warning and exit"""
if change['new'] != 'warn':
backend = ' %s' % change['new']
else:
backend = ''
self.log.error(_("Support for specifying --pylab on the command line has been removed."))
self.log.error(
_("Please use `%pylab{0}` or `%matplotlib{0}` in the notebook itself.").format(backend)
)
self.exit(1)
在以前的版本中,它主要是警告。但这不是一个大问题,因为Jupyter使用的概念,kernels
您可以通过运行以下命令来找到项目的内核
$ jupyter kernelspec list
Available kernels:
python3 /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3
这给了我内核文件夹的路径。现在,如果我打开/Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3/kernel.json
文件,我会看到类似下面的内容
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}",
],
"display_name": "Python 3",
"language": "python"
}
这样您就可以看到执行了什么命令来启动内核。因此,如果您运行以下命令
$ python -m ipykernel_launcher --help
IPython: an enhanced interactive Python shell.
Subcommands
-----------
Subcommands are launched as `ipython-kernel cmd [args]`. For information on
using subcommand 'cmd', do: `ipython-kernel cmd -h`.
install
Install the IPython kernel
Options
-------
Arguments that take values are actually convenience aliases to full
Configurables, whose aliases are listed on the help line. For more information
on full configurables, see '--help-all'.
....
--pylab=<CaselessStrEnum> (InteractiveShellApp.pylab)
Default: None
Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
Pre-load matplotlib and numpy for interactive use, selecting a particular
matplotlib backend and loop integration.
--matplotlib=<CaselessStrEnum> (InteractiveShellApp.matplotlib)
Default: None
Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
Configure matplotlib for interactive use with the default matplotlib
backend.
...
To see all available configurables, use `--help-all`
所以现在如果我们将kernel.json
文件更新为
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}",
"--pylab",
"inline"
],
"display_name": "Python 3",
"language": "python"
}
如果我运行jupyter notebook
图表,则会自动inline
请注意,下面的方法仍然有效,您可以在以下路径中创建文件
〜/ .ipython / profile_default / ipython_kernel_config.py
c = get_config()
c.IPKernelApp.matplotlib = 'inline'
但是这种方法的缺点是,这对于使用python的每个环境都是全球性的影响。如果您希望通过单个更改在整个环境中具有共同的行为,则也可以认为这是一种优势。
因此,请根据您的需求选择要使用的方法
除了@Kyle Kelley和@DGrady,以下是可以在
$HOME/.ipython/profile_default/ipython_kernel_config.py
(或您创建的任何个人资料)
更改
# Configure matplotlib for interactive use with the default matplotlib backend.
# c.IPKernelApp.matplotlib = none
至
# Configure matplotlib for interactive use with the default matplotlib backend.
c.IPKernelApp.matplotlib = 'inline'
然后,这将在ipython qtconsole和Notebook会话中都起作用。