【问题标题】:pylint can't find QWidget and QApplicationpylint 找不到 QWidget 和 QApplication
【发布时间】:2018-03-02 10:32:39
【问题描述】:
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

标签: python pyqt pyqt5 pylint


【解决方案1】:

我在此页面中找到了解决方案: 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 代码那样自省它,因此它错误地断定该名称不存在于模块中。
【解决方案2】:

(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"]
【解决方案3】:

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

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


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2018-04-30
    • 2023-03-12
    相关资源
    最近更新 更多