ImportError: cannot import name QWebEngineView

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWebEngineView

app = QApplication(sys.argv)
window = QMainWindow()
view = QWebEngineView()
view.load(QUrl("http://www.google.com"))
window.setCentralWidget(view)
window.show()
sys.exit(app.exec_())

Böyle bir kodda aldığım hata tam olarak şu:

Traceback (most recent call last):
  File "C:\Users\eymen\Desktop\qtweb.py", line 2, in <module>
    from PyQt5.QtWidgets import QApplication, QMainWindow, QWebEngineView
ImportError: cannot import name 'QWebEngineView' from 'PyQt5.QtWidgets' (C:\Users\eymen\AppData\Local\Programs\Python\Python311\Lib\site-packages\PyQt5\QtWidgets.pyd)

Ancak pyqt5 sürümüm en güncel sürüm ve herhangi bir hata göremiyorum python sürümü ile alakalı olduğunu düşündüm ancak bir fikre varamadım sürüm: 3.11.1 alternatif kütüphaneler isteğimi karşılamıyor, Yardımcı olursanız sevinirim.

Şöyle bir şey buldum.

python - Cannot import QtWebKitWidgets in PyQt5 - Stack Overflow

Derki qt 5.5 da geçersiz kılınmış, 5.6 da da tamamen çıkarılmış.

Bunun yerine,

QWebEngineView — PyQt Documentation v5.15.4 (riverbankcomputing.com)

Kullanabilirsiniz diyor.

Doğru anladı isem, sorun python sürümünden değil. QT sürümünden kaynaklı görünüyor.

İki seçeneğiniz var yeni alternatifi kullanmak, ki bunu istemediğinizi söylemişsiniz ama ben yine de denemenizi önerebilirim.

Yada qt nin destekleyen eski bir sürümüne dönebilirsiniz.

Tercih sizin.

Tabi bunlar, olağan yollar, yetkiler, kurulum hataları gibi diğer hataların olmadığı varsayımı ile.

Python’da beni en rahatsız eden şey, kütüphaneler güncellediğinde hunharca desteklediği yordamları kaldırabiliyorlar. Bir sürümde çalışan diğer sürümde çalışmaz hale gelebiliyor.

Bu kadar dinamik hızlı gelişen ve geriye uyumluluğu dert etmeyen bir dil görmedim.

Verdiğiniz linki budum ancak böyle bir çıkarımda bulunamadım aslında google da ilk sıralarda…
Alternatiflere gelince pywebview diye bir kütüphane ve CEFpython var ancak yeterli değiller.
Ayrıca bende bazı (bu gibi) durumlarda pythonun bu özelliğini kınıyorum.
Ayrıca teşekkürler.

Ancak zannedersem konu sürümle alakalı değil son anda aklıma geldi ki yüklerken bu tarz bir hata aldım: (yöetici komut isteminde de)

Resmi göremiyorum. Ama kurulum hatası konuşuyorsak çözümler değişir. Bu durumda kütüphaneleri yüklemek, QT binarylerini yüklemek, editör/derleyici/ yorumlayıcı ayarlarını kontrol etmek gibi bir çok ihtimali değerlendirmek durumundasınız.

Bir sistemin çalışması için bütün bileşenlerinin çalışması gerekir, ama durması için herhangi bir parçasının çalışmaması yeter.

Eğer sorunun kütüphane sürümleri ile alakalı olmadığını düşünüyorsanız editör ayarlarınız, python sürümlerini değiştirmek gibi farklı farklı varyasyonları denemek durumundasınız.

Nokta atış şuradan kaynaklanıyor demek bu aşamada zor.

Aslında bu gibi durumlar için uygun versiyonları bir araya getiren konfigürasyon dosyaları var ve fakat her zaman bunlarla uğraşılmıyor.

Söylediğim gibi, qt versiyonunuz uygun değilse zaten çalışmayacak. Ama bunun yanı sıra, install hatası alıyorsanız.

Python derleyicinizden itibaren her şeyi kontrol etmeniz gerekir.

Mesela şunu da deneyebilirsiniz.

pip install ile kütüphane yükleyemezseniz sonuna --pre

bayrağını ekleyerek bir pre sürümün inmesini ve çalışmasını da bazan sağlayabilirsiniz stabil sürüm yerine bazan işe yaradığı oluyor.

Qt versyonunum uygun ancak fotorafi göremiyorsanız hatadan kısa bir kesit vereyim

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Hatamız bu.

Kurulum hatası. Farklı sürümlerini kurmaya çalışarak deneyebilirsiniz.

pip komutuna özel bir versiyon vererek farklı eski sürümlerinden birini kurmayı deneyin.

2 farklı sürüm denedim aslında hepsinde aynı hata sürüm önerme imkanınız varsa önerirseniz güzel olur.

Çalışan bir sürümü ancak deneme yanılma ile bulabilirsiniz. Fazla geriye gittiğinizde bu sefer python version uyumsuzlukları da eklenecektir.

Biraz deneme yanılma biz çözüm zaman alır. Vakit ayırabilirsem eklerim. Yani doğru çalışan, iki kütüphaneyi eşleştirmeniz gerekecek ki bu da zor görünüyor tabi ki imkansız değil.

Edit:

Vakit ayırıp farklı kütüphanelerde denedim.

Sonra şöyle bir şey varkettim.

from PyQt5.QtWidgets import QApplication, QMainWindow, QWebEngineView
import sys

from PyQt6.QtWidgets import QApplication, QMainWindow
from PyQt6.QtWebEngineWidgets import QWebEngineView

QWebEngineView ayrıca import edilmesi gerekiyor. Takılmayın ben qt6 için denedim. Siz qt5 için de deneyebilirsiniz.

Bu bulunamayan kütüphane sorununuzu çözecektir.

Diğer taraftan kodunuz kütüphaneleri yüklese de farklı bir hata daha veriyor.

Orada gördüğüm kadarıyla QUrl de de bir hatanız var ona da ayrıca bakabilirsiniz.

Yani tahminimce;

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView

Şeklinde kütüphane ekleme sorununuz çözülecektir. Hangi kütüphane tümleşik hangisi ayrılmış hangisi ayrı import edilecek versiyondan takip edemeyeceğim siz de zorlayın bence.

Ama kodunuzun diğer kısmındaki hataları siz gözden geçirmelisiniz.

Kolay gelsin.

EDIT 2.

Madem bu kadar uğraştık tamamına erdireyim dedim.

Ben Qt6 için yüklemiştim. Kodda qt5 için de çalışacaktır diye tahmin ediyorum. Sadece qt6 yazan yerleri qt5 olarak değiştirip deneyin.

import sys
from PyQt6.QtCore import QUrl
from PyQt6.QtWidgets import QApplication, QMainWindow
from PyQt6.QtWebEngineWidgets import QWebEngineView

app = QApplication(sys.argv)
window = QMainWindow()
view = QWebEngineView()

view.load(QUrl("http://www.google.com"))
window.setCentralWidget(view)
window.show()
sys.exit(app.exec())

Sonuç:

Vaktim olursa Qt5 için de dener eklerim.

EDIT 3:

Şimdi Adım adım Qt5 için kurulum yapalım.

pip uninstall komutu ile varsa eski versiyonları silin.

Temiz kurulumda.

Aşağıdaki komutlarla kurulumları yapın.

pip install PyQt5
pip install PyQtWebEngine

İkisi de kurulacaktır:

Ardından kodumuzu düzeltelim:

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView

app = QApplication(sys.argv)
window = QMainWindow()
view = QWebEngineView()

view.load(QUrl("http://www.google.com"))
window.setCentralWidget(view)
window.show()
sys.exit(app.exec())

Şimdi çalıştıralım.

Ve kodumuz hatasız şekilde çalıştı.

Aslında derleyici bize hatayı söylüyor, bu kütüphaneye ulaşamadım diye. Ve bunca yazı boyunca tek yaptığım, o kütüphanenin nerede olduğunu aramak oldu. Sanırım eski versionlarda birleşikti ama sonrasında ayrı bir kütüphaneye atmışlar.

Umarım sorununuz çözülmüştür.

1 Beğeni

Size bu kadar zaman ayırdığınız için teşekkür ediyorum.

Ancak pencere adını nasıl değiştiriyoruz muhtemelen basit bir yolu vardır ancak qt de tkinter kadar becerikli ve denetimli değilim.

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView

app = QApplication(sys.argv)
window = QMainWindow()
window.setWindowTitle('Başlık')
view = QWebEngineView()

view.load(QUrl("http://www.google.com"))
window.setCentralWidget(view)
window.show()
sys.exit(app.exec())
window.setWindowTitle('Başlık')

Satırında başlık yazan kısma yazabilirsiniz.

Yalnız böyle teker teker zor ilerlersiniz.

Bir tane bir referans inceleyip örnekleri denemeniz daha faydalı olabilir. Tüm özelliklerin tanıtıldığı referans dokümnalar size kütüphanenin özellikleri hakkında daha ayrıntılı bilgi verebilir.

1 Beğeni