Неспособность импорт библиотек matplotlib.pyplot в jupyter (но не ipython)

обновление: ipykeynel 4.4.1 исправлена эта проблема утром 9 августа.

у меня есть новая установка, и я пытаюсь запустить свои зависимости python, а именно jupyter notebook и matplotlib. Я установил pip все, и" import 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

полный traceback

однако, если я в ipython (командная строка), это отлично работает. Кроме того, запуск графиков из модуля из командной строки, отлично. Я пробовал различные методы:

  • Pip установка / удаление matplotlib, ipython и jupyter в различном порядке
  • использование pip с --no-cache-dir и / или --ignore-installed
  • удаление ~/.тайник./~ ,ipython и ~/.jupyter
  • убедитесь, что никакие пакеты не установлены с apt-get, только с pip
  • используя apt-get для установки python-matplotlib, ipython и python-jupyter

похоже, что я искалечил какую-то информацию о пути, но я не могу найти, что или где это вызовет, особенно после многократного удаления/переустановки pip и очистки кэша. Я прочитал каждый вопрос SO, касающийся импорта matplotlib, ни один из них не был полезен.

Я вернулся к matplotlib 1.4.3, и это сработало, но мне не хватает нескольких функций. Я понимаю, что это вероятно, сложный, поэтому, если у вас есть какое-либо понимание, даже если оно неполное, это было бы очень оценено. Кроме того, если это что-то достойное отчета об ошибке (никогда не делал, не уверен, что это проблема matplotlib, или просто локально goofed up), прокомментируйте как таковой, и я отправлю его. Спасибо!

информация о системе:

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)

вывод sys.путь в ipython и jupyter (одинаковый для обоих):

['',
 '/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 ответов


У меня такая же проблема, и проблема, возможно, вызвана ipykernel. после отката ipykernel версии до 4.3.1. проблема решена.

как и сказал @Igor Raush, это похоже на циркуляр импорта matplotlib.pyplot.


как уже упоминалось здесь, используя волшебные строки %matplotlib позволяет мне использовать бэкэнд plot-in-new-window (Qt4Agg в моем случае). Я не знал, что вы можете использовать %matplotlib сам по себе, без аргументов. Хотя обновление до ipykernel 4.4.1 исправляет эту проблему, я думал, что трюк с волшебной линией был довольно умным и может прояснить другие странности/ошибки импорта в будущем.