【问题标题】:Unable to import matplotlib.pyplot with latest conda无法使用最新的 conda 导入 matplotlib.pyplot
【发布时间】:2016-10-13 18:55:25
【问题描述】:

我正在使用 Python 2.7.12 运行 Conda 4.2.9 版,我已经用新的 conda 环境和只有 matplotlib 包确认了这个错误

当我尝试导入 matplotlib.pyplot 时出现问题:

>>> import matplotlib.pyplot
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/pyplot.py", line 114, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/backends/backend_qt5agg.py", line 16, in <module>
    from .backend_qt5 import QtCore
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py", line 31, in <module>
    from .qt_compat import QtCore, QtGui, QtWidgets, _getSaveFileName, __version__
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/backends/qt_compat.py", line 137, in <module>
    from PyQt4 import QtCore, QtGui
ImportError: No module named PyQt4

我在谷歌上广泛搜索了这个问题,发现有一些临时解决方案,但是,我不知道如何使用其中一个,另一个对我不起作用。

一种解决方案是手动设置 matplotlib 的后端,如下所示:

>>> import matplotlib
>>> matplotlib.use('Qt5Agg')
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/pyplot.py", line 114, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/backends/backend_qt5agg.py", line 16, in <module>
    from .backend_qt5 import QtCore
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py", line 31, in <module>
    from .qt_compat import QtCore, QtGui, QtWidgets, _getSaveFileName, __version__
  File "/home/me/anaconda2/envs/snowflake/lib/python2.7/site-packages/matplotlib/backends/qt_compat.py", line 137, in <module>
    from PyQt4 import QtCore, QtGui
ImportError: No module named PyQt4

如您所见,这对我来说失败了。另一个解决方案是使用补丁 (sourced from this thread)。不幸的是,我不知道如何使用这个补丁或如何“将 pyqt 固定到 4.11”。有人可以帮忙吗?

【问题讨论】:

    标签: python matplotlib pyqt conda


    【解决方案1】:

    解释了固定包here

    The patch 非常小,您可以手动应用它。查找您的 matplotlibrc 文件(可能是 .config/matplotlib/matplotlibrc),并通过编辑以下行将默认后端设置为 Qt5Agg:

    backend      : Qt5Agg
    backend.qt5  : PyQt5
    

    但是,由于您的程序中已经有 use("Qt5Agg"),它会覆盖 rcfile,我认为这不会有帮助。

    我认为您的问题是由 QT_API 环境变量仍设置为 PyQt4(或 PySide)引起的。例如,通过将import os; print(os.environ.get('QT_API')) 添加到您的程序来检查这一点。如果是这种情况,请将行 export QT_API=PyQt5 添加到您的 .bashrc(假设您运行 Linux)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 2017-11-05
      • 2017-05-30
      • 1970-01-01
      相关资源
      最近更新 更多