ModuleNotFoundError, если я импортирую панд перед pyplot - PullRequest
0 голосов
/ 18 мая 2018

Этим утром я натолкнулся на странную ошибку, на которую надеюсь получить некоторую справочную информацию.У меня есть работа вокруг, но я хотел бы знать, есть ли какая-то более глубокая проблема.Я не смог найти что-либо на SE или в другом месте онлайн.

Ошибка: если я импортирую панд перед matplotlib.pyplot, я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    import matplotlib.pyplot as plt
  File "/usr/lib64/python3.6/site-packages/matplotlib/pyplot.py", line 115, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/usr/lib64/python3.6/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
ModuleNotFoundError: No module named 'matplotlib.backends.backend_qt4agg'

Код, который работает:

import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas

plt.plot([1,2,3],[3,2,1])
plt.show()

Код, который больше не работает:

import pandas
import matplotlib as mpl
import matplotlib.pyplot as plt

plt.plot([1,2,3],[3,2,1])
plt.show()

Примечание: запуск кода из файла завершается неудачно (python3 test.py), но работает из интерпретатора командной строки.

Я попытался обновить свои пакеты Python этим утром, хотя я не думал, что это что-то сделало.Я хотел, чтобы Панды 23 использовали функцию, которую я видел в их документах.Я обновил pip3 ('pip install --user pip'), думая, что у него будет самая последняя версия.У меня были некоторые проблемы с пипом 10.0.1 (см. https://github.com/pypa/pip/issues/5221), но это, похоже, было волшебным образом решено, несмотря на то, что на самом деле не было предложено ни одного из предложенных решений в этом потоке.В любом случае оказалось, что я использовал самую последнюю версию Pandas, доступную на pip (0.20.1), поэтому я сохранил это.Сегодня утром я также сделал 'обновление dnf', пытаясь решить проблему с пипсами.

Я использую Python 3.6.5, Pandas 0.20.1 и Matplotlib 2.0.0.Запуск Fedora 26. Мой код работал нормально (импорт панд перед pyplot) до попыток обновления.

Дело в том, что я сделал несколько вещей, которые могли его сломать, и я хотел бы выяснить, почему.Кажется неправильным, что порядок импорта должен иметь значение.Любые идеи о том, что вызывает это?Если это на самом деле ошибка (а не просто проблема pebkac), где я могу сообщить об этом?

Cheers

1 Ответ

0 голосов
/ 10 ноября 2018

Настройки бэкэнда в файле ~ / .matplotlib / matplotlibrc .Измените его с TkAgg на Agg или другой бэкэнд, если вы установили.

Или вы можете попробовать это,

import matplotlib
matplotlib.use("Agg")
...