Pylint 中的模块“PyQt5.QtWidgets”错误中没有名称“QApplication”

新手上路,请多包涵

在尝试学习 PyQt5 时在 VS Code 中遇到此问题,“模块‘PyQt5.QtWidgets’中没有名称‘QApplication’”,“模块‘PyQt5.QtWidgets’中没有名称‘QWidget’”。

我不确定这是一个 pylint 问题还是其他问题。我已经确认 PyQt5 是用 pip3 list 安装的,但我似乎无法弄清楚这个问题。

 import sys
from PyQt5.QtWidgets import QApplication, QWidget

def app():
  my_app = QApplication(sys.argv)
  w = QWidget()
  w.setWindowTitle("Test")
  w.show()
  sys.exit(my_app.exec_())
app()

我希望此错误不会继续显示,但会阻止我在 VS Code 中运行。任何帮助或建议表示赞赏。

原文由 wolfeyes90 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

我已经解决了这个问题,显然 Pylint doesn't load any C extensions by default, because those can run arbitrary code. 所以我发现如果你在项目目录中创建一个名为 .pylintrc 的系统文件--- rc 文件可以将这个包列入白名单以停止通过在 rc 文件中添加以下代码抛出错误 extension-pkg-whitelist=PyQt5 。所以本质上问题不在于 PyQt5,而是 linter 因这个而抛出错误错误。

原文由 wolfeyes90 发布,翻译遵循 CC BY-SA 4.0 许可协议

我认为消除包导入错误的最简单方法是通过 Ctrl+Shift+P 进入 vscode 的 JSON 设置,搜索“设置”并选择 Preferences: Open Settings (JSON) 并将此行添加到字典中:

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

如果要添加多个包,只需将其与第一个包一起添加,用逗号分隔,如下所示:

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

原文由 VagrantC 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题