ipython --pylab
究竟做什么?
ipython --pylab
是否完全等效于:
> ipython
> from pylab import *
如果没有,有什么区别?
假设我在没有--pylab
参数的情况下启动IPython,我如何将其恢复到与使用--pylab
启动时相同的状态?
--pylab[=option]
在技术上几乎等同于%pylab option
,区别在于您不能卸载--pylab
内核,但可以重新启动%pylab
内核。
%pylab
不仅仅是from pylab import *
(请参阅%pylab?
以获得更长的解释),但简而言之,是的,它导入了很多东西,但它也挂接了事件循环(qt、wx、osx…),并为matplotlib设置了一些显示挂接(这些东西神奇地允许您获得内联图)。如果你想知道的话,设置显示挂钩更接近于sympy.init_printing()
。
请注意,从IPython 1.0开始,我们建议不要使用--pylab
或%pylab
(除非您确切知道其含义)。我们提供了仅初始化显示挂钩的%matplotlib
。如果%pylab
替换了当前命名空间中的一些对象,以及替换了哪些对象,它将发出警告。这尤其适用于像sum
这样的函数,它们的行为与有没有pylab的行为不同,并会导致细微的错误。
我们现在认为--pylab
是一个错误,但它在IPython开始时仍然非常有用。我们都知道Explicit is better than implicit
,所以如果你能建议人们不要使用%pylab
,我们将不胜感激,总有一天会把它扔掉。
从%pylab帮助中提取,只提供pylab:的导入部分
%pylab makes the following imports::
import numpy
import matplotlib
from matplotlib import pylab, mlab, pyplot
np = numpy
plt = pyplot
from IPython.display import display
from IPython.core.pylabtools import figsize, getfigs
from pylab import *
from numpy import *
除了导入之外,还有一个显著的区别是交互式绘图,您可以使用动态启用它
import matplotlib
matplotlib.rcParams['interactive'] = True
我认为命令行上的--pylab
选项相当于使用%pylab
魔术。至少我是这样使用它的。这也让你有机会选择绘制后端,即%pylab inline
、%pylab qt
等。