matplotlib Qt 绑定问题,PyQt5 后端问题

问题描述 投票:0回答:1
今天将 Pycharm 升级到版本 2024.2 后,matplotlib 再次抛出错误。在此之前工作得很好。现在它抛出一个错误,如下所示:

import matplotlib.pyplot as plt

出现以下错误

raise ImportError(""" ImportError: Could not load requested Qt binding. Please ensure that PyQt4 >= 4.7 or PySide >= 1.0.3 is available, and only one is imported per session. Currently-imported Qt library: 'pyqt5' PyQt4 installed: False PyQt5 installed: False PyQt6 installed: False PySide >= 1.0.3 installed: False Tried to load: ['pyqt5']
我对如何解决这个问题束手无策。我尝试卸载 pyside2 和 pyqt5 并再次重新安装 pyqt5。我尝试安装异常中提到的 pyqt4 版本,但这不起作用。任何有关如何解决此问题的提示将不胜感激。由于安装 opencv 时发生后端冲突,matplotlib 后端出现过此问题。我通过手动分配后端解决了这个问题。请参阅此链接:

如何将 matplotlib 中的默认后端从 Pycharm 中的“QtAgg”更改为“Qt5Agg”?

但现在我不知道如何解决这个错误。我不必使用 PyQt5。任何其他与 PyQt5 执行相同工作的后端都可以。我尝试了 matplotlib 提供的所有替代方案,但没有一个令人满意。我需要它在新窗口中绘制图形,这对于编写我的代码非常重要。简单的内联后端是不行的。

编辑: @musicamante 建议提供一个最小的可重复示例,所以这里是:

import numpy as np import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec fig = plt.figure(figsize=(12, 9))
pycharm 上的错误保持不变,但这是终端上的错误:

(newVirtualEnv) surname@pcName:~/.config/JetBrains/PyCharm2024.2/scratches$ python3 scratch_3.py Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway. QSocketNotifier: Can only be used with threads started with QThread
    
matplotlib pyqt5 pyqt4 pyside2 matplotlibpyplot
1个回答
0
投票
好的。我浪费了一天的时间,终于找到了解决办法。该问题是由于 opencv-python 和 matplotlib 之间的 GUI 后端依赖项之间存在冲突造成的。如果您不使用 cv2.imshow(),那么您可以简单地删除 opencv-python 并安装 opencv-python-headless ,它会安装没有任何包依赖项的包,这消除了与 matplotlib 的冲突。这解决了我的问题。只需在终端上运行以下命令:

pip uninstall opencv-python pip uninstall matplotlib pip uninstall PyQt5 pip install matplotlib pip install PyQt5 pip install opencv-python-headless
下面的这三个链接非常有帮助;其中之一是一个 stackoverflow 问题,其中有我需要的解决方案,但只有在我自己找出解决方案后才找到它。遗憾的是这个问题没有突出显示:

  1. https://github.com/opencv/opencv-python/issues/386

  2. https://stackoverflow.com/a/65826201/10921574

  3. https://github.com/opencv/opencv-python/issues/467

© www.soinside.com 2019 - 2024. All rights reserved.