我的编码环境已经使用了一段时间。这个问题最近发生在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,直到有更好的解决方案出来。
这确实是 astroid v2.4.0 的一个 bug,自从 astroid v2.4.1 与 Pylint v2.5.2 配对后,这个 bug 就被修复了。