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的主要内容,如果未能解决你的问题,请参考以下文章