【问题标题】:ImportError: No module named QtWebKitImportError:没有名为 QtWebKit 的模块
【发布时间】:2011-02-24 17:57:14
【问题描述】:

我在 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

【问题讨论】:

    标签: python pyqt4 qtwebkit


    【解决方案1】:

    apt install python-pyqt5.qtwebkit

    【讨论】:

    • 为什么 PyQt4 需要 pyqt5 qtwebkit?
    【解决方案2】:

    仔细检查以确保您系统上的 Qt 安装已构建 Webkit 库。

    另外,检查以确保 QtWebKit.so 存在于您的 python2.6/site-packages/PyQt4 目录中。

    【讨论】:

    • 从您的“发现”来看,您的系统似乎没有 Qt 发行版本身的 QtWebKit 库。我不太了解 CentOS,但在你的包管理器中检查 QtWebKit 包并安装它。然后你需要重建 PyQt4。
    • 我认为 QtWebKit 是 PyQt 的一部分。 Centos 使用 yum,我也不知道如何使用它。我认为 yum search webkit 会找到一些东西,但它没有。我将删除这些软件包,然后安装它,看看会发生什么。 qt.nokia.com/downloads
    • PyQt 只是包装了底层的 Qt 库。当你构建 PyQt 时,它会检查你安装了哪些 Qt 库,然后为它找到的内容构建包装器。对 centos 5 和 webkit 的快速 google 并没有发现太多东西。希望 CentOS 专家能给你一个更好的答案。
    【解决方案3】:

    安装python模块PySide,例如:

    pip install PySide
    

    然后将您的导入更改为:

    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from PyQt4.QtWebKit import QWebPage
    

    到:

    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,因为上述基本上只是解决方法。

    【讨论】:

      【解决方案4】:

      从 atrpms el5 repo 安装 qt44/qt44-x11/qt44-devel rpms。

      http://atrpms.net/dist/el5/qt4/

      【讨论】:

        猜你喜欢
        • 2012-07-26
        • 1970-01-01
        • 2013-03-11
        • 2012-12-07
        • 2012-05-23
        • 2019-07-29
        • 2015-07-04
        • 2014-03-15
        • 2017-12-29
        相关资源
        最近更新 更多