Brak nazwy "QApplication" w module " PyQt5.Błąd QtWidgets w Pylint

Napotkanie tego problemu W VS Code podczas próby nauczenia się PyQt5, "No name' QApplication 'in module' PyQt5.QtWidgets'", "No name' QWidget 'w module' PyQt5.QtWidgets""

Nie jestem pewien, czy to problem z pylintami, czy coś innego. Potwierdziłem, że PyQt5 jest zainstalowany z listą pip3, ale nie mogę zrozumieć problemu.
import sys
from PyQt5.QtWidgets import QApplication, QWidget

def app():
  my_app = QApplication(sys.argv)
  w = QWidget()
  w.setWindowTitle("Test")
  w.show()
  sys.exit(my_app.exec_())
app()

Spodziewałbym się, że ten błąd nie będzie wyświetlany, ale uniemożliwia mi uruchamianie rzeczy w kodzie VS. Wszelka pomoc lub sugestie doceniam to.

Author: wolfeyes90, 2019-06-23

7 answers

Rozgryzłem problem, najwyraźniej Pylint doesn't load any C extensions by default, because those can run arbitrary code. więc odkryłem, że jeśli utworzysz plik systemowy w katalogu projektu o nazwie .pylintrc plik rc może dodać ten pakiet do białej listy, aby przestać wyrzucać błędy, dodając następujący kod w pliku rc extension-pkg-whitelist=PyQt5. Więc zasadniczo problemem nie jest PyQt5, to był linter rzucający fałszywe błędy z tego powodu.

 34
Author: wolfeyes90,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-23 23:18:27

Myślę, że najprostszym sposobem na usunięcie błędów importowania pakietów jest wejście w Ustawienia JSON vscode za pomocą Ctrl + Shift + P, wyszukaj "ustawienia" i wybierz Preferences: Open Settings (JSON) i dodanie tej linii do dict:

"python.linting.pylintArgs": ["--extension-pkg-whitelist=PyQt5"]

Jeśli chcesz dodać kilka pakietów, po prostu dodaj je z pierwszym, oddzielonym przecinkiem w ten sposób:

"python.linting.pylintArgs": ["--extension-pkg-whitelist=PyQt5,otherPkg"]
 10
Author: user3625087,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-28 19:39:31

Mogę odtworzyć błędy PyLint w Visual Studio Code w Windows 10(Python 3.7.3, PyQt 5.11.3, PyLint 2.3.1). Chociaż nie przeszkadza mi to w uruchomieniu kodu, jak sugeruje pytanie.

Z pewnością jest to problem z linterem, a nie instalacją PyQt5 czy czymkolwiek innym, ponieważ PyLint przestaje narzekać, gdy zmienia kod na następujący odpowiednik:

from PyQt5 import QtWidgets

app = QtWidgets.QApplication([])
window = QtWidgets.QWidget()
window.setWindowTitle("Test")
window.show()
app.exec_()

Znacząca różnica polega na tym, że ten kod importuje moduł QtWidgets jako całość, a nie indywidualną klasę obiekty w nim zdefiniowane.

 5
Author: John Hennig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-23 23:18:40

Znalazłem rozwiązanie łatwe, wystarczy użyć QApplication w ten sposób:

my_app = QtWidgets.QApplication(sys.argv)

I nie Importuj z PyQt5.

Testowane w PyQt5!
 5
Author: Juan Arturo Olmedo Ramírez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-02 06:47:51

Jeśli używasz VSCode, przejdź do "Plik" > "Referencje" > "Ustawienia" > kliknij tę ikonę w lewym górnym rogu: Tutaj wpisz opis obrazka ("Ustawienia.JSON "plik zostanie otwarty) > dodaj te linie do ustawień".json": {]}

{
    "python.linting.pylintArgs": [
        "--extension-pkg-whitelist=PyQt5"
    ]
}
 2
Author: 8Observer8,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-04 14:54:34

Zgodnie z sugestią @wolfeyes90 TUTAJ Utwórz plik w katalogu głównym projektu o nazwie .pylintrc o treści:

extension-pkg-whitelist=PyQt5
 0
Author: Tadeu Sampaio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-04 11:13:48

Może ten błąd o instalacji PyQt5

 -3
Author: elifSOZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-19 11:18:13