PyQt5 安装会导致设计器 qtopengl 出现 pyqtgraph 错误



我在导入、qtopengl、pyqtgraph 和设计器版本兼容性方面遇到了问题。根据软件包安装,设计器不会加载自定义插件,并显示 libQt5Core.so ImportError,或者GLViewWidgets因QtOpenGl ImportError而失败。

我的问题:

  • 是否存在兼容性问题?
  • 版本问题?
  • 以前有没有人单独解决过这些问题?我不确定它们是否或如何连接。
  • 有没有办法让两种情况同时工作?

安装:(python3.6,ubuntu 18.04)

pip3 install --user pyqt5  # -> PyQt5-5.12.2
pip3 install --user pyqtgraph  # -> 0.10.0
apt-get install python3-pyqt5

当 pip3 pyqt5 软件包未安装时,设计器将打开并成功加载自定义小部件插件。但是,运行一个基本的pyqtgraph GLViewWidget会导致:

from ..Qt import QtCore, QtGui, QtOpenGL, USE_PYQT5
ImportError: cannot import name 'QtOpenGL'

当 pip3 pyqt5 软件包安装 IS 时,运行基本的 pyqtgraph GLViewWidget 是成功的。但是设计器无法加载自定义小部件插件:

from PyQt5 import QtWidgets, QtCore
ImportError: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.12' not found (required by /home/USER/.local/lib/python3.6/site-packages/PyQt5/QtWidgets.so)

注意: 自定义 widget 插件与 GLViewWidget 完全无关,GLViewWidget 与设计器完全无关。 GLViewWidget 来自 pyqtgraph,但错误只是在导入时(到目前为止),所以 pyqtgraph 可能不是问题的根源。将进一步试验这一点。


代码来尝试 GLViewWidget

from pyqtgraph import opengl as gl, mkQApp  # fails here
app = mkQApp()
view = gl.GLViewWidget()
view.show()
app.exec()

设计器插件最小示例 (QVLabel_plugin.py)

from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin
class QVLabel(QtWidgets.QLabel):
pass
class QVLabelPlugin(QPyDesignerCustomWidgetPlugin):
def __init__(self, parent=None):
QPyDesignerCustomWidgetPlugin.__init__(self)
self.initialized = False
def initialize(self, formEditor):
if self.initialized:
return
self.initialized = True
def isInitialized(self):
return self.initialized
def createWidget(self, parent):
return QVLabel(parent=parent)
def name(self):
return "QVLabel"
def group(self):
return "Custom Widgets"
def icon(self):
return None  # will raise TypeError in designer, but everything should work fine
def toolTip(self):
return ''
def whatsThis(self):
return ''
def isContainer(self):
return True
def includeFile(self):
return "QVLabel_plugin"

在QVLabel_plugin.py目录中运行设计器

PYQTDESIGNERPATH=. designer

GL 如何失败:

from ..Qt import QtCore, QtGui, QtOpenGL, USE_PYQT5
ImportError: cannot import name 'QtOpenGL'

设计器如何失败:

from PyQt5 import QtWidgets, QtCore
ImportError: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.12' not found (required by /home/USER/.local/lib/python3.6/site-packages/PyQt5/QtWidgets.so)

这适用于"导入错误:无法导入名称'QtOpenGL'">

sudo apt-get install python3-pyqt4.qtopengl

请参阅:刚刚安装了QtOpenGL,但无法导入(从Python)

python3-pyqt4.qtopengl已折旧,新版本已python3-pyqt5.qtopengl

新命令:

sudo apt install python3-pyqt5.qtopengl

相关内容

  • 没有找到相关文章

最新更新