IPython --pylab与IPython的区别

11
< p >"ipython --pylab" 究竟是做什么的?< /p >< p >是不是 ipython --pylab 完全等同于:< /p>
 > ipython
 > from pylab import *

如果没有,它们有什么区别?

假设我启动IPython时没有使用--pylab参数,如何使其达到与使用--pylab启动相同的状态?


1
我认为 --pylab 标志的激励是使 ipython 成为 MATLAB 的克隆版,因此那些从 MATLAB 转向 python/numpy/scipy/matplotlib 的用户不必处理 import 语句。 - SethMMorton
3个回答

23

--pylab[=选项]%pylab 选项 几乎相同,唯一的区别是你无法取消 --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 刚开始时确实非常有用。我们都知道“显式优于隐式”,因此如果你能建议人们不要使用 %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 *

4
除了导入之外,一个显著的区别是交互式绘图,你可以通过以下方式动态启用它:
import matplotlib
matplotlib.rcParams['interactive'] = True

1
或者通过 ipython --matplotlib 进行设置,使其具有交互功能,但不会导入所有的 pylab 工具。 - askewchan

2

我认为命令行中的--pylab选项相当于使用%pylab魔法命令。至少我是这样使用的。这还给了你选择绘图后端的机会,比如%pylab inline%pylab qt等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接