23
votes

I've recently upgraded PyQt5 from 5.5.1 to 5.6.0 using the Windows 32-bit installer here: https://www.riverbankcomputing.com/software/pyqt/download5. I've also upgraded my python from 3.4 to 3.5.

When I run my old code (which used to work) with the latest version I get an exception:

    from PyQt5.QtWebKitWidgets import *
ImportError: No module named 'PyQt5.QtWebKitWidgets'

All of my QT calls in my python occur consecutively and are (and I know I shouldn't be importing * but that's beside the issue here I think):

        from PyQt5.QtCore import *
        from PyQt5.QtGui import *
        from PyQt5.QtWidgets import *
        from PyQt5.QtWebKitWidgets import *

So the QtCore, QtGui and QtWidgets imports are all OK.

Also, when I search the source for QtWebKitWidgets there appears several references to this module.

Finally my python path looks like:

C:\PYTHON35;C:\PYTHON35\DLLs;C:\PYTHON35\LIB;C:\PYTHON35\LIB\LIB-TK;

and environment path:

C:\Python35\Lib\site-packages\PyQt5;C:\Python35;C:\Python35\Lib;C:\Python35\Lib\site-packages;C:\Python35\Scripts ....
5

5 Answers

30
votes

QtWebKit got deprecated upstream in Qt 5.5 and removed in 5.6.

You may want to switch to PyQt5.QtWebEngineWidgets :

This supercedes the QtWebKit module and provides better and up-to-date support for HTML, CSS and JavaScript features

18
votes

I was trying to run qutebrowser and it had the same error, the answer is simple, the packages changed. You have two solutions:

1)

pip install PyQtWebEngine

2)

pip install PyQt5==5.11.3

Hope this helps any future problems

13
votes

In PyQt5 "QtWebKitWidgets" is Deprecated. I just replace this line

from PyQt5.QtWebKitWidgets import QWebView, QWebPage
from PyQt5.QtWebKit import QWebSettings

With this code:

from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView,QWebEnginePage as QWebPage
from PyQt5.QtWebEngineWidgets import QWebEngineSettings as QWebSettings
4
votes

In PyQt5 "QtWebKitWidgets" is no longer available. Instead it is replaced with "QtWebEngineWidgets". So you have to make this change in your code.

For more information: http://doc.qt.io/qt-5/qtwebenginewidgets-qtwebkitportingguide.html

4
votes

If you really want to use PyQt5.QtWebKitWidgets, you could run this from the command line:

pip install PyQtWebKit

and let it do what it does.