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


问题内容

更新:ipykeynel 4.4.18月9日上午修复了此问题。

我进行了全新安装,并一直在尝试建立并运行python依赖项,即jupyter notebook和matplotlib。我已经安装了所有内容,并且“
import matplotlib”有效。如果我在jupyter笔记本中,并且尝试“ import
matplotlib.pyplot”或“从matplotlib import pyplot as 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

全面追溯

但是,如果我在ipython(命令行)中,则可以正常工作。另外,从命令行从模块运行图也可以。我尝试了多种技术:

  • Pip以各种顺序安装/卸载matplotlib,ipython和jupyter
  • 通过–no-cache-dir和/或–ignore-installed使用pip
  • 删除〜/ .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']

问题答案:

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

就像@Igor Raush所说的一样,它看起来像是matplotlib.pyplot的导入通知。