Ubuntu PyQt5-SIP API 10级错误。API 11要求

Ubuntu PyQt5-SIP API 10级错误。API 11要求,ubuntu,import,pyqt5,Ubuntu,Import,Pyqt5,反馈 我正在使用标准的Python3(3.3.2+)解释器安装PyQt5(基于Qt5.2.1/sip4.15.5api11?),该解释器兼容PyQt5(>=3.3.2),因为不可能在Ubuntu 12.04上编译Python3.3-5,也不可能安装PyQt5(python 3.3.2或更高版本) 平台: jeby6372@mercure:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Descripti

反馈

我正在使用标准的Python3(3.3.2+)解释器安装PyQt5(基于Qt5.2.1/sip4.15.5api11?),该解释器兼容PyQt5(>=3.3.2),因为不可能在Ubuntu 12.04上编译Python3.3-5,也不可能安装PyQt5(python 3.3.2或更高版本)

平台

jeby6372@mercure:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 13.10
Release:    13.10
Codename:   saucy
jeby6372@mercure:~$ uname -a
Linux mercure 3.11.0-13-generic #20-Ubuntu SMP Wed Oct 23 07:38:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
在安装过程中,一切似乎都正常工作,PyQt5导入工作正常,但当我尝试通过python3解释器导入模块时,出现以下错误:

>>> import PyQt5
>>> from PyQt5.QtCore import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: the sip module implements API v10.0 to v10.1 but the PyQt5.QtCore module requires API v11.0
我的python环境变量是:

jeby6372@mercure:~$ echo $PYTHONPATH
/usr/lib/python3.3/site-packages
$PATH变量:

jeby6372@mercure:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/Qt/5.2.1/gcc_64/bin
$LD\u LIBRARY\u路径为空(我不认为这很重要,但我更愿意提及它…)

网站pacakges dir的内容为:

jeby6372@mercure:~$ ls /usr/lib/python3.3/site-packages
PyQt5

__init__.py  QtCore.so  QtDBus.so  QtNetwork.so  Qt.so  QtXmlPatterns.so  uic
但在以前的安装中,情况有所不同。不知道为什么!:

jeby6372@mercure:~$ ls /usr/lib/python3.3/site-packages/PyQt5
__init__.py               QtDesigner.so           QtNetwork.so       QtQuick.so       QtSvg.so        QtXmlPatterns.so
_QOpenGLFunctions_2_0.so  QtGui.so                QtOpenGL.so        QtSensors.so     QtTest.so       uic
QtBluetooth.so            QtHelp.so               QtPositioning.so   QtSerialPort.so  QtWebKit.so
QtCore.so                 QtMultimedia.so         QtPrintSupport.so  Qt.so            QtWidgets.so
QtDBus.so                 QtMultimediaWidgets.so  QtQml.so           QtSql.so         QtX11Extras.so
我不知道问题出在哪里,我对这个产品做得越多,我对它的了解就越少。我在Ubuntu13.10上进行安装是因为PyQt5在Ubuntu12.04上无法工作,因为Python 3.3-5编译错误。。还没有答案

请帮忙


提前感谢。

您的问题来自发行版提供的sip与您可能从源代码编译的sip之间的冲突

根据用户mata的建议,调用
导入sip;在python3解释器控制台中打印(sip,sip.sip\u VERSION\u STR)
,并将输出与从普通(bash)控制台调用
sip-V
得到的输出进行比较。版本可能有所不同

我通过识别系统中所有已安装的sip相关软件包克服了这个错误。(对于类似Debian的系统:
dpkg-l | grep sip
),删除它们及其所有配置文件(对于Debian:
apt get purge python3 sip python3 sip dev
),并重新安装自定义版本(通过再次运行
make install

顺便说一下,我对所有PyQt5包也做了同样的操作。根据您不完整的站点软件包列表,您可能还安装了一些较旧的PyQt5发行版软件包。 当前的一个有更多的模块。(例如QtSql)


(所有提到的命令可能都应该以root用户身份执行。)

我在这里发帖,因为我还不能发表评论。对于Windows中存在此问题的任何人,对于我来说,sip版本如下所示: 进口sip 打印(sip,sip.sip\u版本\u STR)
低于sip文件名中显示的版本。我通过卸载并重新安装sip(pip uninstall sip)修复了它。

这意味着安装的python sip模块太旧,或者可能找到了以前安装的模块。什么是
导入sip;打印(sip,sip.sip\u VERSION\u STR)
say?事实上是的。我做了很多更改,但在删除python3 sip包后,我可以导入QtCore、QTnetwork谢谢您的回复。我的问题与这里提到的相同:[但是没有回答,您的命令的输出是(现在?
4.15.5
您确定所有模块(QtGui、QtWidgets…)是在您构建Qt时编译和安装的吗?pyqt只能针对已安装的库构建绑定…感谢您的回答。事实上,如果我没记错的话,我通过删除使用错误sip版本的python3 sip包解决了这个问题。非常感谢您救了我的命!对于遇到这种情况的人错误:RuntimeError:sip模块实现API v11.0,但PyQt5.QtCore模块需要API v11.2。这个答案解决了这个问题。到目前为止,我似乎无法扭转这个错误。我也按照教程的指示在QT5之后编译了PyQt5和sip(确实应该有关于此的警告,以清除所有错误)我在网上发现,虽然sip软件包可以很容易地删除,但PyQt5和QT5却不能这么说。重新运行QT5安装程序能做到这一点吗?这太棒了!对python 2和PyQt4也有效。在我的例子中,我从源代码安装了PyQt4和sip,但忘记了删除之前安装的Ubuntu软件包。
jeby6372@mercure:~$ ls /usr/lib/python3.3/site-packages/PyQt5
__init__.py               QtDesigner.so           QtNetwork.so       QtQuick.so       QtSvg.so        QtXmlPatterns.so
_QOpenGLFunctions_2_0.so  QtGui.so                QtOpenGL.so        QtSensors.so     QtTest.so       uic
QtBluetooth.so            QtHelp.so               QtPositioning.so   QtSerialPort.so  QtWebKit.so
QtCore.so                 QtMultimedia.so         QtPrintSupport.so  Qt.so            QtWidgets.so
QtDBus.so                 QtMultimediaWidgets.so  QtQml.so           QtSql.so         QtX11Extras.so