Vscode Pylint no-member(本答案僅適用於解決Django報錯)
錯誤信息
Class ‘XXX’ has no ‘object’ member pylint(no-member)
使用環境
Vscode
Pylint
錯誤分析
Pylint的報錯原因主要有以下兩種情況:
- object確實不存在當前成員(Pylint報錯且運行程序也報錯)
- object的成員是動態添加的,只有在程序運行時此成員纔會出現(Pylint報錯但是程序可正常執行)
解決方法
方法一(推薦)
使用pylint-django對Pylint進行增強,讓Pylint理解Django web framework
步驟
-
安裝pylint-django
pip install pylint-django
-
在vscode的setting.json對pylint-django進行使用
"python.linting.pylintArgs": [
"--load-plugins",
"pylint_django"
]
方法二(不推薦)
直接禁用no-member錯誤
步驟
- 在vscode的setting.json禁用no-member錯誤
"python.linting.pylintArgs": [
"--disable=E1101"
]
方法三(極不推薦)
規定動態生成的成員
步驟
"python.linting.pylintArgs": [
"--generated-members=pandas.*"
]
解釋
以下語句是使用pylint --long-help
對以上方法進行的查找
--generated-members=<members names>
List of members which are set dynamically and missed
by pylint inference system, and so shouldn't trigger
E1101 when accessed. Python regular expressions are
accepted. [current: none]
吐槽
請問一下CSDN的大哥們能不能不要複製粘貼,一上來就說下面語句能解決問題,我???
"python.linting.pylintArgs": [
"--generate-members"
]
你們用了之後真的解決了問題嗎?我怎麼用了之後Pylint什麼地方都不報錯了呢?
上面的語句等同於下面的語句,也能同樣達到你想要的效果
"python.linting.pylintArgs": [
"--瞎粘貼就完事了,能不能用和我沒有關係,反正不是我的vscode,也不是我的人生"
]
錯誤原因
是--generated-members
不是--generate-members
,少了個d,所以上面兩個語句都是一樣的,pylint執行的語句錯誤,所以pylint直接就不能用了。