Pylint false positive "<class 'RuntimeError'>: wrapped CC++ 对象类型 QApplication has been deleted"

问题描述 投票:0回答:1

我的编码环境已经使用了一段时间。这个问题最近发生在pylint或VS-code的一些升级后。

我的设置是

VS-Code + Python 3.7(anaconda) + pylint 2.5.0。

我在VS-Code中使用的一些扩展有 Anaconda Extension Pack, Qt for Python.

这是重现这个问题所需要的最低限度的代码。

#!/usr/bin/env python3
"""
A demo for pylint
"wrapped C/C++ object of type QApplication has been deleted"
false positive
"""
import sys
from PyQt5 import QtWidgets


class Window(QtWidgets.QMainWindow):
    """A simple window"""
    def __init__(self):
        super(Window, self).__init__()
        self.variable = 1  # This line triggers the alarm.
        self.show()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    newWindow = Window()
    sys.exit(app.exec_())

很明显,没有任何真正的问题。上面的代码会运行得很好。

同时,pylint一直在抱怨。

类型为QApplication的封装CC++对象被删除了

通常情况下,我不会费心。但是,这个错误让pylint无法迭代。

有谁知道是什么让pylint不高兴了吗?

PS,这里是我的VS-Code的settings.json。

{
    "editor.renderWhitespace": "selection",
    "editor.tabCompletion": "on",
    "files.eol": "\n",
    "telemetry.enableCrashReporter": false,
    "telemetry.enableTelemetry": false,
    "window.autoDetectHighContrast": false,
    "window.zoomLevel": 0,
    "git.autofetch": true,
    "python.dataScience.notebookFileRoot": "${fileDirname}",
    "python.terminal.executeInFileDir": true,
    "python.linting.pylintEnabled": true,
    "python.linting.pycodestyleEnabled": true,
    "python.linting.enabled": true,
    "python.linting.pylintArgs": [
        "--extension-pkg-whitelist=PyQt5",
        "--generated-members=numpy.*, torch.*, PyQt5.*",
        "--disable=invalid-name, protected-access, E1102"
    ],
    "python.dataScience.sendSelectionToInteractiveWindow": false,
    "workbench.colorTheme": "Monokai",
}

我只是设置了一个干净的虚拟机,并用这些包的不同版本做了一个快速测试.原来这个问题是从pylint 2.5.0开始引入的,Pylint 2.4.4很好。

看起来更像是一个bug而不是一个问题。总之...

我在Github上开了一个问题,如果你们遇到类似的问题可以去看看。#3617 这可能也与星形图有关。我并不在意,我会坚持使用2.4.4,直到有更好的解决方案出来。

python visual-studio-code pyqt pyqt5 pylint
1个回答
0
投票

这确实是 astroid v2.4.0 的一个 bug,自从 astroid v2.4.1 与 Pylint v2.5.2 配对后,这个 bug 就被修复了。

© www.soinside.com 2019 - 2024. All rights reserved.