问题
I am on centos5. I installed python26 source with a make altinstall. Then I did a:
yum install qt4
yum install qt4-devel
yum install qt4-doc
From riverbankcomputing.co.uk I downloaded the source for sip 4.10.2, compiled and installed fine. Then from the same site I downloaded and compiled from source PyQt-x11-4.7.3
Both installs were using the python26 version (/usr/local/bin/python2.6). So configure.py, make, and make install worked with no errors. Finally, I tried to run this script, but got the error in the subject of this post:
import sys
import signal
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebPage
def onLoadFinished(result):
if not result:
print "Request failed"
sys.exit(1)
#screen = QtGui.QDesktopWidget().screenGeometry()
size = webpage.mainFrame().contentsSize()
# Set the size of the (virtual) browser window
webpage.setViewportSize(webpage.mainFrame().contentsSize())
# Paint this frame into an image
image = QImage(webpage.viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
webpage.mainFrame().render(painter)
painter.end()
image.save("output2.png")
sys.exit(0)
app = QApplication(sys.argv)
signal.signal(signal.SIGINT, signal.SIG_DFL)
webpage = QWebPage()
webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished)
webpage.mainFrame().load(QUrl("http://www.google.com"))
sys.exit(app.exec_())
Even in the beginning of the configure for pyqt4, I saw it say QtWebKit should be installed, but apparently it's not? What's going on?
I just did a find, and it looks like it wasn't installed. What are my options?
[root@localhost ~]# find / -name '*QtWebKit*'
/root/PyQt-x11-gpl-4.7.3/sip/QtWebKit
/root/PyQt-x11-gpl-4.7.3/sip/QtWebKit/QtWebKitmod.sip
/root/PyQt-x11-gpl-4.7.3/cfgtest_QtWebKit.cpp
回答1:
Double check to make sure that the Qt installation on your system has the Webkit library built.
Also, check to make sure that the QtWebKit.so exists in your python2.6/site-packages/PyQt4 directory.
回答2:
apt install python-pyqt5.qtwebkit
回答3:
install the python module PySide
, for example with:
pip install PySide
adn then change your imports from:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebPage
to:
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtWebKit import QWebPage
Alternatively you could use PySide just a s a fall back, so you can keep your code compatible with older systems too:
try:
# NOTE We need to try importing QtWebKit first,
# because it is the most likely one to not be available,
# and all used QT classes need to come from the same module,
# to be compatible with each other.
from PyQt4.QtWebKit import QWebPage
from PyQt4.QtCore import *
from PyQt4.QtGui import *
except ImportError:
try:
from PySide.QtGui import *
from PySide.QtWebKit import QWebPage
except ImportError:
raise Exception("We require PyQt4 (with QtWebKit) or PySide")
NOTE In the long run you should change to QT5 though, as the above are basically just workarounds.
回答4:
install the qt44/qt44-x11/qt44-devel rpms from the atrpms el5 repo.
http://atrpms.net/dist/el5/qt4/
来源:https://stackoverflow.com/questions/2922711/importerror-no-module-named-qtwebkit