2013-12-11 66 views
9

ipython --pylab究竟干什么?ipython --pylab vs ipython

ipython --pylab正是等同于:

> ipython 
> from pylab import * 

如果不是,有什么区别?

说我的IPython推出无参数--pylab,我怎样才能把它相同的状态,就像我曾与--pylab开始呢?

+1

我认为对于'--pylab'标志的激励是使'ipython'一个MATLAB克隆,这样MATLAB用户切换到python/numpy/scipy/matplotlib不需要处理'import'语句。 – SethMMorton

回答

20

--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 * 
2

我觉得命令行上的--pylab选项等于使用%pylab魔法。至少我是这样使用它的。这也让你有机会选择绘图后端,即%pylab inline%pylab qt

3

除了进口一个明显的区别是交互式绘图,您可以动态启用:

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

或'ipython --matplotlib'设置后端并使其交互,但不导入所有pylab的东西。 – askewchan