PyQt5安装导致designer、qtopengl、可能pyqtgraph错误
Posted
技术标签:
【中文标题】PyQt5安装导致designer、qtopengl、可能pyqtgraph错误【英文标题】:PyQt5 installation results in designer, qtopengl, possibly pyqtgraph errors 【发布时间】:2019-10-27 16:01:54 【问题描述】:我在导入、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包安装完成后,运行基本的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)
注意: 自定义小部件插件与 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)
【问题讨论】:
只需安装 PyQt5 的版本:或 pip3 install --user pyqt5 或 apt-get install python3-pyqt5 因为您意识到提供 pip 的 PyQt5 版本与 apt-get 不同,所以您会看到版本冲突,恕我直言,同时卸载 python 并仅使用 apt-get 如果你使用apt-get然后执行apt-get install python-pyqt5.qtopengl安装QtOpenGL 我尝试只使用 pip 安装,但设计器甚至没有尝试加载插件(我之前甚至不知道 pip 方法甚至包括设计器)。使用 apt 方法,我的 IDE 甚至无法将 PyQt5 识别为已安装(没有代码完成或查找)。 不要使用 pip,ubuntu 提供了这些包。当您安装 pip 时,它将使用与操作系统提供的不同的二进制文件。正如您所指出的,卸载 pyqt5 并仅使用 apt-get 安装 你的 IDE 是什么?您确定您的 IDE 使用的是使用 apt-get 的 python 版本吗?如果是 pycharm,那么您必须将其配置为使用操作系统的 python,因为它通常配置为使用 virtualenv 【参考方案1】:这适用于“ImportError: cannot import name 'QtOpenGL'”
sudo apt-get install python3-pyqt4.qtopengl
见:Just installed QtOpenGL but cannot import it (from Python)
【讨论】:
以上是关于PyQt5安装导致designer、qtopengl、可能pyqtgraph错误的主要内容,如果未能解决你的问题,请参考以下文章
Pycharm安装PyQt5和pyqt5-tools从而使用Qt Designer
如何为 WINDOWS 10 安装 Qt Designer for PyQt5
Pycharm(2017.2 community)+PyQt5.7+Designer
解决PyQt5在安装后无法找到Designer.exe问题,两个位置可供参考
PyQt5 图形界面 - Qt Designer设置简体中文方法演示,Qt Designer字体设置,Qt Designer工具单独安装包获取,Qt Designer简体中文语言包获取