【问题标题】:ModuleNotFoundError if I import pandas before pyplot如果我在 pyplot 之前导入熊猫,则 ModuleNotFoundError
【发布时间】:2018-10-29 05:55:46
【问题描述】:

今天早上我遇到了一个奇怪的错误,我希望能得到一些背景信息。我有一个解决方法,但我想知道是否有更深层次的问题。我在 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 包,但我认为它没有做任何事情。我想让 Pandas 23 使用我在他们的文档中看到的功能。我更新了 pip3 ('pip install --user pip') 认为它会有最新的版本。我在使用 pip 10.0.1 时遇到了一些麻烦(请参阅 https://github.com/pypa/pip/issues/5221 ),但尽管没有真正在该线程上执行任何建议的解决方案,但这似乎已经神奇地解决了。无论如何,事实证明我使用的是 pip (0.20.1) 上可用的最新版本的 Pandas,所以我保留了它。今天早上我也做了一个“dnf 更新”,试图解决 pip 问题。

我正在使用 Python 3.6.5、Pandas 0.20.1 和 Matplotlib 2.0.0。运行 Fedora 26。在尝试更新之前,我的代码运行良好(在 pyplot 之前导入了 pandas)。

关键是,我做了几件事可能会破坏它,我想找出原因。进口顺序应该很重要似乎是错误的。关于造成这种情况的任何想法?如果它实际上是一个错误(而不仅仅是一个 pebkac 问题),我应该在哪里报告?

干杯

【问题讨论】:

  • 刚刚在 python 3.6.5、pandas 0.22 和 matplotlib 2.2.2 上尝试过,它工作正常
  • 试试mpl.get_backend() 看看你在这两种情况下是否使用相同的后端?
  • 在失败的例子中,如果你在import pandas之后立即执行import sys; print(sys.modules['matplotlib'].__version__)会发生什么?
  • sathyz: get_backend() 为这两个示例返回 TkAgg。
  • Mad Physicist:打印出版本 2.0.0(也打印出相同的传递代码)

标签: python-3.x pandas matplotlib pip importerror


【解决方案1】:

~/.matplotlib/matplotlibrc 文件中的后端设置。将其从 TkAgg 更改为 Agg 或其他后端(如果已安装)。

或者你可以试试这个,

import matplotlib
matplotlib.use('Agg')

【讨论】:

    猜你喜欢
    • 2017-08-29
    • 2019-12-17
    • 2020-09-25
    • 2018-10-09
    • 2020-10-08
    • 2020-07-22
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多