【问题标题】:PyQt5 - SIP API 10 level error. API 11 requiredPyQt5 - SIP API 10 级错误。需要 API 11
【发布时间】:2014-04-30 15:14:03
【问题描述】:

反馈

我正在使用兼容 PyQt5 (>= 3.3.2) 的标准 Python3 (3.3.2+) 解释器安装 PyQt5(基于 Qt5.2.1 / Sip 4.15.5 API 11 ???)因为无法在 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

安装步骤:

  • 使用标准 X64 linux 安装程序安装 Qt5.2.1
  • 从源安装 SIP 4.15.5
  • PyQt5 来自 RiverBank 过程中提到的编译源,针对 compile.py 选项中的 qmake 程序:

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

包裹位置:

  • Qt-5.2.1 根目录:/opt/Qt/5.2.1/gcc_64
  • PyQt5 根目录:/usr/lib/python3.3/site-packages

Sip 版本

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 上进行此安装,因为 PyQt5 由于 Python 3.3-5 编译错误而无法在 Ubuntu 12.04 上运行.. 仍然没有答案。 ...

请帮忙。

提前致谢。

【问题讨论】:

  • 这意味着安装的python sip模块太旧,或者可能找到了以前安装的模块。 import sip; print(sip, sip.SIP_VERSION_STR) 说什么?
  • 事实上是的。我做了很多更改,但是删除python3-sip包后,我可以导入QtCore,QtNetwork
  • 感谢您的回复。我的问题和这里提到的一样:[riverbankcomputing.com/pipermail/pyqt/2013-July/033011.html]。但没有答案
  • 你的命令的输出是(现在?)&lt;module 'sip' from '/usr/lib/python3/dist-packages/sip.so'&gt; 4.15.5
  • 您确定所有模块(QtGui、QtWidgets ...)在您构建 Qt 时都已编译和安装吗? pyqt 只能针对已安装的库构建绑定...

标签: ubuntu import pyqt5


【解决方案1】:

您的问题来自发行版提供的 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身份执行。)

【讨论】:

  • 感谢您的回答混乱。事实上,如果我没记错的话,我通过删除使用错误 sip 版本的 python3-sip 包解决了这个问题。见hznteam.fr/trac-bubble/ticket/102
  • 非常感谢你救了我的命!对于遇到此错误的人:RuntimeError: the sip module implements API v11.0 but the PyQt5.QtCore module requires API v11.2 这个答案解决了这个问题。
  • 到目前为止,我似乎无法扭转这种不幸。我也按照教程的指示在 QT5 之后编译了 PyQt5 和 Sip(确实应该在 wiki.qt.io/Install_Qt_5_on_Ubuntu 上发出警告以清除所有内容)我在网上找到并且虽然 sip 包相当容易删除,但不能说PyQt5 和 QT5 会重新运行 QT5 安装程序吗?
  • 这太棒了!也适用于 python 2 和 PyQt4。就我而言,我从源代码安装了 PyQt4 并 sip,但忘记删除我之前安装的它们的互惠 Ubuntu 软件包。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多