pylint 找不到 QWidget 和 QApplication

Posted

技术标签:

【中文标题】pylint 找不到 QWidget 和 QApplication【英文标题】:pylint can't find QWidget and QApplication 【发布时间】:2017-09-21 07:17:57 【问题描述】:
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_())

我刚开始学习pyqt5。我写了这个 hello world 应用程序,它可以工作。但是 pylint 给出了“E0611:No name 'QWidget' in module 'PyQt5.QtWidgets'”和 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]

【问题讨论】:

执行:pylint your_file.py -rn --extension-pkg-whitelist=PyQt5 --disable=blacklisted-name,invalid-name,missing-docstring 【参考方案1】:

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

[MASTER]
extension-pkg-whitelist=PyQt5

更方便。现在 pylint 甚至在我的 Visual Studio Code 编辑器中应用此配置。

或者在 VSCode 设置中:

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

【讨论】:

如果要保留默认的 linting 规则,需要再添加两个 pylintArgs,"--disable=all", "--enable=F,E,unreachable,duplicate-key,unnecessary -分号,未分配全局变量,未使用变量,二进制操作异常,错误格式字符串,异常反斜杠字符串,错误打开模式”,因为通过在 pylintArgs 中指定值,此 @ 987654321@(至少在 Visual Studio Code 中)。请参阅默认 Pylint 规则部分的末尾。 谢谢你,你是一个了不起的人。 您能否确认建议的修复适用于 VSCode。我在默认配置末尾的 VSCode 设置中准确插入了该设置,我没有单击“添加配置”,而是在退出配置后简单地键入了一个“,”并添加了建议的白名单代码,然后我重新启动了 VSCode,但我得到了同样的错误。 @Echeban,它在 2017 年工作。但现在我不确定,我不再使用 Qt。 我可以确认它适用于 VSCode 2019。在最后一个 ] 之后,我添加了这个 , "python.linting.pylintArgs": ["-rn --extension-pkg-whitelist=PyQt5 --disable=blacklisted-name,invalid-name,missing-docstring"]【参考方案2】:

我在此页面中找到了解决方案: 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

【讨论】:

您了解错误原因吗?链接的论坛声明 pylint 默认不加载任何 C 扩展。我对pyqt 的内部工作方式不够熟悉,无法理解这意味着什么……但这似乎是某种特定于 C/C++ 的 python 包装器的安全功能?如果可能,请详细说明此错误的原因! @RTbecard 由于 pyqt 是用 C 编写的,因此 pylint 无法像使用普通 python 代码那样自省它,因此它错误地断定该名称不存在于模块中。【参考方案3】:

多半是Qt5和Pylint结合造成的。因此,如果您使用的是 VsCode,请在工作区设置中更新它。

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


【讨论】:

以上是关于pylint 找不到 QWidget 和 QApplication的主要内容,如果未能解决你的问题,请参考以下文章

必须在 QWidget Pyqt5 之前构造 QApp

设置工具安装py2.75的pylint

Pylint和Subprocess.Run返回退出状态28

必须提供 lint.py 的路径,找不到

Visual Studio Code pylint:无法导入“protorpc”

pylint安装失败的解决方法