ipython --pylab vs ipython

时间:2013-12-11 17:06:56

标签: python matplotlib ipython

ipython --pylab究竟做了什么?

ipython --pylab 完全等同于:

 > ipython
 > from pylab import *

如果没有,有什么区别?

假设我启动了IPython 而没有 --pylab个参数,我怎样才能将它带到与 {{1}启动时相同的状态}?

3 个答案:

答案 0 :(得分:21)

--pylab[=option]在技术上几乎等同于%pylab option,因为你不能解开--pylab内核,但你可以重新启动%pylab内核。

%pylab只是from pylab import *的更多内容(请参阅%pylab?了解更长的解释),但简而言之,它会导入很多内容,但它也会挂钩事件循环( qt,wx,osx ...)并为matplotlib设置一些显示挂钩(神奇地允许你获取内联图的东西)。如果你想知道,设置display-hook更接近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 *

答案 1 :(得分:3)

除了导入之外,还有一个明显的区别是交互式绘图,您可以使用以下方式动态启用:

import matplotlib
matplotlib.rcParams['interactive'] = True

答案 2 :(得分:2)

我认为命令行上的--pylab选项等同于使用%pylab魔法。至少这就是我如何使用它。这也让您有机会选择绘制后端,即%pylab inline%pylab qt等。