【问题标题】:ipython --pylab vs ipythonipython --pylab vs ipython
【发布时间】:2013-12-11 17:06:56
【问题描述】:

ipython --pylab 到底是做什么的?

ipython --pylab完全是否等同于:

 > ipython
 > from pylab import *

如果不是,有什么区别?

假设我在没有 --pylab 参数的情况下启动了 IPython,我怎样才能将它带到与 使用 --pylab 启动它时相同的状态?

【问题讨论】:

  • 我认为 --pylab 标志的动机是使 ipython 成为 MATLAB 克隆,因此切换到 python/numpy/scipy/matplotlib 的 MATLAB 用户不必处理 import声明。

标签: python matplotlib ipython


【解决方案1】:

--pylab[=option] 在技术上几乎等同于%pylab option,区别在于您不能取消pylab --pylab 内核,但您可以重新启动%pylab 内核。

%pylabfrom 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】:

    除了导入之外的一个显着区别是交互式绘图,您可以通过以下方式动态启用它:

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

    【讨论】:

    • ipython --matplotlib 设置后端并使其具有交互性,但不导入所有 pylab 内容。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 2012-12-03
      相关资源
      最近更新 更多