【发布时间】: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]。但没有答案
-
你的命令的输出是(现在?)
<module 'sip' from '/usr/lib/python3/dist-packages/sip.so'> 4.15.5 -
您确定所有模块(QtGui、QtWidgets ...)在您构建 Qt 时都已编译和安装吗? pyqt 只能针对已安装的库构建绑定...