matplotlib 不导入 PyQt4、PyQt5 或 PySide

Posted

技术标签:

【中文标题】matplotlib 不导入 PyQt4、PyQt5 或 PySide【英文标题】:matplotlib does not import PyQt4, PyQt5 or PySide 【发布时间】:2017-10-28 19:50:02 【问题描述】:

我正在使用 Canopy 2.1.3 发行版(在 Ubuntu 16.04 上),您可能知道它包含 matplotlib 包。只需在 Canopy 的 shell import matplotlib.pyplot as plt 中运行就可以了

ImportError:基于 Matplotlib qt 的后端需要外部 PyQt4、PyQt5、 或者 PySide 包要安装,但是没有找到。

我已使用 Synaptic 安装了所有三个软件包,但问题仍然存在。 这可能与环境变量有关吗?还是因为 Canopy 的 Python 3.5 和 Ubuntu 的 Python 2.7 冲突?

编辑: 我终于通过从 Canopy 的包管理器安装 PyQt 来使用它。

【问题讨论】:

问题和答案应该对未来的读者有用。因此,我会邀请您而不是在问题中给出一句话的答案,而是提供包含更多细节的完整答案,以便将来遇到相同问题的其他人可以从中受益。 【参考方案1】:

matplotlib.pyplot 的默认后端很可能设置为qt。 我对canopy的经验很少,但是应该可以将默认更改为另一个后端;也许其他人会告诉你怎么做,或者你可以自己找到。

与此同时,您可以尝试将其添加到所有其他 matplotlib 导入之上:

import matplotlib
matplotlib.use('TkAgg')

【讨论】:

【参考方案2】:

来自用户指南:

Known Issue: In Canopy running Python 3, GUI backend must be explicitly set

如果您要求 matplotlib 显示绘图,或者以其他方式运行创建 GUI 窗口的 Python 代码,默认情况下,您将收到以以下结尾的错误回溯:ImportError: No module named 'PyQt4'

解决方案是在 Canopy 包管理器中安装 PyQt(已获得 GPL 许可),或者使用 Canopy Preference 菜单的 Python 选项卡来指定 TK PyLab 后端以创建 GUI。详情见“Python 3 in Canopy 2 - ‘No module named PyQt4’ error”

【讨论】:

以上是关于matplotlib 不导入 PyQt4、PyQt5 或 PySide的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 结合 matplotlib 时,如何显示其 NavigationToolbar

如何刷新嵌入在 PYQT4 中的 MatPlotlib?

PyQt4/matplotlib:如何修复 MatplotlibDeprecationWarning 由于 axes.hold()

在 PyQt4 的嵌入式 matplotlib 图中使用 ginput

Matplotlib在PyQt4的应用

使用 PyCharm 导入 PyQt4.QtGui 但不导入 QtCore