pylint找不到QWidget和QApplication

Ser*_*gey 14 python pyqt pylint pyqt5

import sys
from PyQt5.QtWidgets import (QApplication, QWidget)
app = QApplication(sys.argv)
window = QWidget()
window.setGeometry(50, 50, 500, 300)
window.setWindowTitle('Hello, world')
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

我刚开始学习pyqt5.我写了这个hello world app,它有效.但是pylint在模块"PyQt5.QtWidgets"中给出了"E0611:No name'QWidget'",对于QApplication也是如此.这是pylint中的某种错误吗?

pylint --version
No config file found, using default configuration
pylint 1.7.2, 
astroid 1.5.3
Python 3.5.2 (default, Aug 18 2017, 17:48:00) 
[GCC 5.4.0 20160609]
Run Code Online (Sandbox Code Playgroud)

sla*_*gan 20

(Ubuntu)我已经创建了一个~/.pylintrc文件并添加到那里

[MASTER]
extension-pkg-whitelist=PyQt5
Run Code Online (Sandbox Code Playgroud)

它更方便.现在,即使在我的Visual Studio代码编辑器中,pylint也应用了此配置.

或者在VSCode设置中:

"python.linting.pylintArgs": [
    "--extension-pkg-whitelist=PyQt5"
],
Run Code Online (Sandbox Code Playgroud)

  • 如果要保留默认的掉毛规则,则需要再添加两个pylintArgs,“-disable = all”,“-enable = F,E,unreachable,重复键,不必要的分号,global-variable-not”分配的,未使用的变量,二进制运算例外,格式错误的字符串,字符串中的反斜杠,错误的开放模式”,因为通过在pylintArgs中指定值,此[隐式将pylintUseMinimalCheckers设置为false](https ://code.visualstudio.com/docs/python/linting)(至少在Visual Studio Code中)。请参阅“默认Pylint规则”部分的结尾。 (2认同)

小智 4

我在此页面找到解决方案: http://python.6.x6.nabble.com/PyQt-and-pylint-with-quot-no-name-in-module-quot-td5217888.html

所以在终端中使用它(对于 main.py):

pylint main.py --extension-pkg-whitelist=PyQt5
Run Code Online (Sandbox Code Playgroud)

  • 你明白错误的原因吗?链接的论坛指出*pylint 默认情况下不加载任何 C 扩展*。我对“pyqt”的内部工作原理不够熟悉,无法理解这意味着什么......但这似乎是特定于 C/C++ 的 python 包装器的某种安全功能?如果可能的话,请详细说明此错误的原因,将不胜感激! (2认同)