Python >> Tutoriel Python >  >> Python GUI >> PyQt GUI

Pas de nom 'QApplication' dans le module 'PyQt5.QtWidgets' erreur dans Pylint

J'ai compris le problème, apparemment Pylint doesn't load any C extensions by default, because those can run arbitrary code. J'ai donc trouvé que si vous créez un fichier système dans votre répertoire de projet avec le fichier nommé .pylintrc le fichier rc peut mettre ce paquet sur liste blanche pour arrêter de générer des erreurs en ajoutant le code suivant dans le fichier rc extension-pkg-whitelist=PyQt5 . Donc, essentiellement, le problème n'est pas PyQt5, c'est le linter qui génère de fausses erreurs à cause de cela.


Je pense que le moyen le plus simple de supprimer les erreurs d'importation de packages consiste à accéder aux paramètres JSON de vscode par Ctrl + Maj + P, recherchez "paramètres" et choisissez Preferences: Open Settings (JSON) et en ajoutant cette ligne au dict :

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

Si vous souhaitez ajouter plusieurs packages, ajoutez-le simplement avec le premier, séparé par une virgule comme ceci :

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

Je peux reproduire les erreurs PyLint dans Visual Studio Code sous Windows 10 (Python 3.7.3, PyQt 5.11.3, PyLint 2.3.1). Bien que cela ne m'empêche pas d'exécuter le code, comme le suggère la question.

C'est certainement un problème avec le linter, pas l'installation de PyQt5 ou quoi que ce soit d'autre, car PyLint arrête de se plaindre en changeant le code en l'équivalent suivant :

from PyQt5 import QtWidgets

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

La différence notable étant que ce code importe le QtWidgets module dans son ensemble, et non les objets de classe individuels qui y sont définis.