【发布时间】:2014-05-01 03:45:06
【问题描述】:
我正在运行 Ubuntu 13.10 (python-3.3.2+) 。我已经从官方网站的源代码安装了 Qt5.2.1 (linux 安装程序)、SIP 4.15.5 和 PyQt5。
PyQt5 构建:
Qt qmake 位于此处
jeby6372@mercure:~$ ls /opt/Qt/5.2.1/gcc_64/bin
assistant qdbus qml1plugindump qmlviewer
designer qdbuscpp2xml qml2puppet qtpaths
lconvert qdbusviewer qmlbundle rcc
linguist qdbusxml2cpp qmlimportscanner syncqt.pl
lrelease qdoc qmlmin uic
lupdate qhelpconverter qmlplugindump xmlpatterns
moc qhelpgenerator qmlprofiler xmlpatternsvalidator
pixeltool qmake qmlscene
qcollectiongenerator qml qmltestrunner
我的python路径
jeby6372@mercure:~$ echo $PYTHONPATH
:/usr/lib/python3.3/site-packages
Qt5 库(为显示目的而缩短列表):
jeby6372@mercure:/opt/Qt/5.2.1/gcc_64/lib$ ls
cmake libQt5Positioning.so.5
libicudata.so.51 libQt5Positioning.so.5.2
libicudata.so.51.1 libQt5Positioning.so.5.2.1
libqgsttools_p.so libQt5PrintSupport.so.5.2.1
libqgsttools_p.so.1 libQt5QmlDevTools.a
libQt5CLucene.so.5.2 libQt5QuickParticles.so.5.2.1
libQt5Concurrent.so.5.2 libQt5QuickTest.la
libQt5Concurrent.so.5.2.1 libQt5QuickTest.prl
libQt5Core.so.5.2.1 libQt5Script.prl
libQt5DBus.la libQt5Script.so
.......
libQt5Multimedia.so libQt5WebKit.prl
libQt5Nfc.la libQt5Widgets.so.5.2.1
libQt5Nfc.prl libQt5X11Extras.la
libQt5Nfc.so libQt5X11Extras.prl
libQt5Nfc.so.5 libQt5X11Extras.so
libQt5Nfc.so.5.2 libQt5X11Extras.so.5
libQt5OpenGLExtensions.a libQt5X11Extras.so.5.2.1
libQt5OpenGLExtensions.la libQt5Xml.la
libQt5OpenGL.so libQt5XmlPatterns.so.5
libQt5OpenGL.so.5 libQt5XmlPatterns.so.5.2
libQt5OpenGL.so.5.2.1 libQt5Xml.prl
libQt5Platfor
libQt5PlatformSupport.prl libQt5Xml.so.5.2
libQt5Positioning.so
我在从官方 PyQt-gpl-5.2.1.tar.gz tarball 中提取的源目录中运行了以下命令:
python3 configure.py --qmake /opt/Qt/5.2.1/gcc_64/bin/qmake # My PyQt5 location
sudo make
sudo make install
问题:
我只能导入一组受限的模块
>>> from PyQt5.QtCore import *
>>> from PyQt5.QtNetwork import *
>>> from PyQt5.QtXmlPatterns import *
>>> from PyQt5.Qt import *
>>> from PyQt5.QtGui import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'PyQt5.QtGui'
>>> from PyQt5.QtWidgets import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'PyQt5.QtWidgets'
我可以导入 /usr/local/python3.3/sites-packages/PyQt5 中列出的 QtCore、QtNetwork ...:
jeby6372@mercure:/usr/lib/python3.3/site-packages/PyQt5$ ls
__init__.py QtCore.so QtDBus.so QtNetwork.so Qt.so QtXmlPatterns.so uic
但是我不能导入QtWidgets、QtGui ..等等。
这里好像PyQt5的库不是全部复制过来的。
post 中描述了同样的问题......但不幸的是,RiverBank 的团队没有回应:
有什么想法吗?
【问题讨论】:
-
您链接的帖子中问题的原因是OpenGL was not installed。也许这也是你的问题 - 尝试安装 libgl1-mesa-dev 和 libgl1-mesa-glx 并重新编译 PyQt5
-
链接的帖子得到了三个回复,均来自项目维护者。其中一个响应要求查看设置了
--verbose标志的configure.py的输出。如果他安装 OpenGL 的建议不能解决您的问题,请在此处执行相同操作。 -
谢谢你,玛塔。您的解决方案完美运行。我刚刚安装了缺少的 libgl1-mesa-dev 包,从源代码编译了 PyQt5,一切都很好(除了另一个 Qt 重绘错误,但这将记录到新帖子中)。再次感谢。
-
ekhumoro 你是对的。我应该通过 configure.py --verbose 选项进行更深入的调查。下次我不会忘记的。谢谢。
-
与其在标题中加入“SOLVED”,不如直接接受自己的答案?这是将此问题标记为已解决的正确方法。
标签: python-3.x qtgui pyqt5 qtwidgets