PyQt5 - SIP API 10级错误 . 需要API 11

Feedback

我正在进行PyQt5安装(基于Qt5.2.1 / Sip 4.15.5 API 11 ???)和标准Python3(3.3.2)解释器兼容PyQt5(> = 3.3.2),因为它不可能在Ubuntu 12.04上编译Python3.3-5然后无法安装PyQt5(python 3.3.2或更高版本) .

Plateform

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

Installation steps :

  • Qt5.2.1与标准X64 linux安装程序一起安装

  • SIP 4.15.5从源安装
    来自RiverBank过程中提到的源编译的

  • PyQt5,目标是compile.py选项中的qmake程序:

python3 configure.py --qmake /opt/Qt/5.2.1/gcc_64/bin/qmake --sip / usr / bin / sip

Package Locations :

  • Qt-5.2.1根目录: /opt/Qt/5.2.1/gcc_64

  • PyQt5根目录: /usr/lib/python3.3/site-packages

Sip Version

jeby6372@mercure:~$ which sip
/usr/bin/sip
jeby6372@mercure:~$ sip -V
4.15.5
jeby6372@mercure:~$

我的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_LIBRARY_PATH是空的(不要认为它很重要,但我更愿意提及它......)

site-pacakges目录的内容是:

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

我无法弄清问题在哪里,我对这个产品的工作越多,我理解的就越少 . 我正在Ubuntu 13.10上进行此安装,因为由于Python 3.3-5编译错误,PyQt5无法在Ubuntu 12.04上运行..仍然没有答案 . ...

请帮忙 .

提前致谢 .

回答(2)

3 years ago

你的问题来自于分发提供的sip和你可能从源代码编译的sip的冲突 .

由用户mata提取时,从python3解释器控制台中调用 import sip; print(sip, sip.SIP_VERSION_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身份执行 . )

3 years ago

我在这里发帖是因为无法发表评论 . 对于Windows中出现此问题的任何人,对我来说,import sip print(sip,sip.SIP_VERSION_STR)显示的sip版本低于sip文件名中显示的版本 . 我通过卸载并重新安装sip(pip uninstall sip)来修复它 .