ImportError: 找不到 QtWebKit 模块

8

我正在使用CentOS5系统。我通过make altinstall安装了Python26源代码。然后我执行了以下操作:

yum install qt4
yum install qt4-devel
yum install qt4-doc

我从riverbankcomputing.co.uk下载了sip 4.10.2的源代码,并成功编译和安装。然后我从同一网站下载并编译了PyQt-x11-4.7.3的源代码。

这两个安装都使用了python26版本(/usr/local/bin/python2.6)。因此,configure.py、make和make install都没有出现错误。最后,我尝试运行这个脚本,但是出现了这篇文章标题中的错误:

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_())

即使在pyqt4的配置开始时,我看到它说QtWebKit应该被安装,但显然它没有被安装?发生了什么事?

我刚才进行了查找,看起来它没有被安装。我的选择是什么?

[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
5个回答

5

apt install python-pyqt5.qtwebkit


3
为什么PyQt4需要PyQt5 QtWebkit? - 林果皞

4

请确保您系统上的Qt安装已经构建了Webkit库。

同时,请检查您的python2.6/site-packages/PyQt4目录下是否存在QtWebKit.so文件。


从你的“查找”结果来看,你的系统似乎没有Qt发行版自带的QtWebKit库。我不太了解CentOS,但请在软件包管理器中查找QtWebKit包并安装它。然后你需要重新构建PyQt4。 - Matt T
我以为QtWebKit是PyQt的一部分。Centos使用yum,我也不太确定如何使用它。我想yum搜索webkit会找到一些东西,但实际上并没有。我打算删除那些软件包,然后安装这个,看看会发生什么。 http://qt.nokia.com/downloads - Nathan
1
PyQt只是封装了底层的Qt库。在构建PyQt时,它会检查您安装了哪些Qt库,然后为其构建包装程序。快速搜索CentOS 5和WebKit并没有找到什么有用的信息。希望一个CentOS专家能给您一个更好的答案。 - Matt T

2

安装Python模块PySide,例如使用以下命令:

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

或者您可以使用 PySide 作为备用选项,这样您就可以使您的代码与旧系统兼容:


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")

注意 长期来看,您应该改用QT5,因为上述方法基本上只是一种解决方法。


0

0
在我的情况下,当我尝试在Ubuntu Bionic 18.04上安装Electrum时,出现了这个错误消息。问题是默认的Python版本太旧了,因为当时的最低要求是Python 3.8,因此上面的命令安装了错误(Python)版本的PyQT5。
解决方案是安装:
sudo apt-get install -y python3.8 python3.8-dev
之后,您可以通过运行以下命令来配置默认的Python版本:
sudo update-alternatives --config python

也许吧

sudo update-alternatives --config python3

之后还有

sudo apt-get install -y python-pyqt5.qtwebkit

效果更好。您还可以尝试以下方法:

pip install python3-pqt5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接