Python PyQt5 无法导入名称“QWebView”

Posted

技术标签:

【中文标题】Python PyQt5 无法导入名称“QWebView”【英文标题】:Python PyQt5 cannot import name 'QWebView' 【发布时间】:2018-02-18 03:08:34 【问题描述】:

我不断收到此错误:

ImportError: cannot import name 'QWebView'

...对于这段代码:

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebPage

-我在运行 High Sierra 10.13.3 的 Mac 上 -我安装了 Python 3.6.4 - 安装了 PyQt5(做了几次,包括使用 HomeBrew)

我很确定一切都安装正确,因为当我运行python3 -m pip install PyQt5 时它告诉我Requirement already satisfied

MacBook-Pro-3:~ ericj36$ python3 -m pip install PyQt5
Requirement already satisfied: PyQt5 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
Requirement already satisfied: sip<4.20,>=4.19.4 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from PyQt5)

当我尝试运行我的代码时得到的完整错误是:

 ...line 4, in <module>
    from PyQt5.QtWebEngineWidgets import QWebView
ImportError: cannot import name 'QWebView'

那么这里会发生什么?我究竟做错了什么? (我是 Python 新手,但不是开发新手。)

任何帮助将不胜感激。

【问题讨论】:

也许你应该在得出毫无根据的结论之前直接read the web engine docs。 【参考方案1】:

Qt5 有两种不同的 Web 工具包:基于 WebKit 的 QtWebKit 和基于 Chromium 的较新的 QtWebEngine

您的导入似乎混淆了这两者。 QWebPageQWebViewQtWebKit 的一部分,而不是 QtWebEngine 的一部分,QWebEngineViewQWebEnginePage

所以你可以选择任何一个

WebEngine:

from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtWebEngineWidgets import QWebEngineView

WebKit:

from PyQt5.QtWebKitWidgets import QWebPage
from PyQt5.QtWebKitWidgets import QWebView

这两者的接口在很大程度上是兼容的,但并不完全相同。

【讨论】:

我选择了 WebEngine 选项 - 有效!谢谢!

以上是关于Python PyQt5 无法导入名称“QWebView”的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_Freeze、PyQt5、Python3 构建的 exe 无法导入 ExtensionLoader_PyQt5_QtWidgets.py 并运行

Python3 找不到并导入 PyQt5

导入错误:没有名为 PyQT5 (Win7x64) 的模块

无法导入 PyQt5.QtWebEngineWidgets

无法导入 PyQt5 模块

无法导入名称'ImageTK'-python 3.5