无法在jupyter中导入matplotlib.pyplot(但不是ipython)

时间:2016-08-08 21:37:56

标签: python matplotlib jupyter-notebook

更新:ipykeynel 4.4.1在8月9日早上修补了这个问题。

我有一个全新的安装,我一直在努力让我的python依赖项启动并运行,即jupyter notebook和matplotlib。我已经安装了所有东西,然后输入matplotlib"作品。如果我在一个jupyter笔记本中,我尝试"导入matplotlib.pyplot"或者"从matplotlib导入pyplot作为plt",我得到:

ImportError                               Traceback (most recent call last)
...
/usr/local/lib/python2.7/dist-packages/IPython/core/pylabtools.pyc in configure_inline_support(shell, backend)
    359     except ImportError:
    360         return
--> 361     from matplotlib import pyplot
    362
    363     cfg = InlineBackend.instance(parent=shell)

ImportError: cannot import name pyplot

Full traceback

但是,如果我在ipython(命令行)中,这可以正常工作。此外,从命令行的模块运行图表,很好。我尝试了各种技术:

  • 以各种顺序安装/卸载matplotlib,ipython和jupyter
  • 将pip与--no-cache-dir和/或--ignore-installed
  • 一起使用
  • 删除〜/ .cache,〜/ .ipython和〜/ .jupyter
  • 确保没有使用apt-get安装软件包,只安装了pip
  • 使用apt-get安装python-matplotlib,ipython和python-jupyter

感觉我已经破坏了某种路径信息,但我无法找到导致此问题的原因或位置,尤其是在多个pip卸载/重新安装和缓存清除之后。我已经阅读了有关导入matplotlib的每个SO问题,但没有一个有用。

我回滚到matplotlib 1.4.3,这很有效,但它缺少我需要的一些功能。我意识到这可能是一个棘手的问题,所以如果你有任何见解,即使不完整,也会非常感激。此外,如果这是一个值得错误的报告(从来没有做过,不确定这是一个matplotlib问题,还是只是本地搞砸了),请注释,我会提交一个。谢谢!

系统信息:

Linux Mint 18 "Sarah"
Python==2.7.12
ipykernel==4.4.0
ipython==5.0.0
ipython-genutils==0.1.0
ipywidgets==5.2.2
jupyter==1.0.0
jupyter-client==4.3.0
jupyter-console==5.0.0
jupyter-core==4.1.0
notebook==4.2.2
numpy==1.11.1
pip 8.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)

ipython和jupyter中的sys.path输出(两者都相同):

['',
 '/usr/local/bin',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
 '/usr/local/lib/python2.7/dist-packages/IPython/extensions',
 '/home/mm/.ipython']

2 个答案:

答案 0 :(得分:6)

我有同样的问题,问题可能是由ipykernel产生的。 在我将ipykernel版本回滚到4.3.1之后。问题解决了。

就像@Igor Raush所说,它看起来像是matplotlib.pyplot的导入循环。

答案 1 :(得分:1)

As mentioned here,使用魔术线%matplotlib允许我使用新窗口中的绘图后端(在我的情况下为Qt4Agg)。我不知道你可以单独使用%matplotlib,没有争论。即使对ipykernel 4.4.1的更新修复了这个问题,我认为神奇的线条技巧非常聪明,并且可能会在将来消除其他导入怪异/错误。