PyLint无法识别cv2成员

Kit*_*adr 24 opencv pylint visual-studio-code

我在opencv项目上运行pylint,我在VS代码中收到许多关于不存在的成员的pylint错误.

示例代码:

import cv2
cv2.imshow(....)
Run Code Online (Sandbox Code Playgroud)

获得的错误:

在此输入图像描述

但是,代码运行正常,没有任何错误.

版本:pylint 1.8.1,astroid 1.6.0

Gab*_* P. 52

这是来自pylint.您可以生成在该命令你的项目的根pylint的配置文件:(我觉得这是有帮助的,如果你在一个团队或在不同的计算机从同一回购工作)

pylint --generate-rcfile > .pylintrc
Run Code Online (Sandbox Code Playgroud)

在生成的.pylintrc文件的开头,您将看到

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=
Run Code Online (Sandbox Code Playgroud)

添加cv2以便最终得到

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=cv2
Run Code Online (Sandbox Code Playgroud)

保存文件.lint错误应该消失.


Man*_*kla 38

  1. 在 VScode 上:CTRL + Shift + P
  2. 选择“首选项:打开设置(JSON)”
  3. 将此行添加到 JSON 文件中:"python.linting.pylintArgs": ["--generate-members"]

完成,它对我有用

注意:确保您选择“首选项:打开设置(JSON)”,而不是“首选项:打开默认设置(JSON)”

设置文件看起来像

{
"workbench.iconTheme": "vscode-icons",
"python.dataScience.sendSelectionToInteractiveWindow": true,
"kite.showWelcomeNotificationOnStartup": false,
"python.dataScience.askForKernelRestart": false,
"python.dataScience.jupyterServerURI": "local",
"python.pythonPath": "/usr/bin/python3",
"workbench.colorTheme": "Monokai",
"vsicons.dontShowNewVersionMessage": true,
"python.linting.pylintArgs": ["--generate-members"] }
Run Code Online (Sandbox Code Playgroud)

  • @Clément 是正确的:不,这不起作用。这正在破坏 `pylint`,这就是为什么你的 lint 消失了(全部!)。通过发出 `pylint --generate-members` 或检查 VS Code 的输出 - Python 窗口来检查自己。我不敢相信这已经被点赞了 40 多次。 (7认同)
  • 没有选项“--generate-members”。我在 VS Code 中尝试了这一点,我认为这有效,但事实证明 pylint 实际上退出时出现了 VS Code 中未显示的错误。 (4认同)

小智 26

尝试导入CV2这样的:from cv2 import cv2

  • 如果您描述他们的问题是什么/错误是什么以及如何解决它,那就太好了。 (10认同)
  • 较新的 pylint 版本(2.10.2)只需将消息从“no-member”更改为“c-extension-no-member”,并建议将模块添加到“extension-pkg-allow-list”,如[此处](https)所回答://stackoverflow.com/a/51916065/1259982) (6认同)
  • 在你告诉我为什么它有效之前我不会给你竖起大拇指...... (5认同)
  • 这确实有效——至少对我来说——但是_为什么呢_? (3认同)
  • 为什么呢?这真可笑。 (2认同)

Zai*_*lux 13

这里是 MS V Code 中 settings.json 文件的代码片段

"python.linting.pylintArgs":["--extension-pkg-whitelist=cv2"]
Run Code Online (Sandbox Code Playgroud)


Pra*_*l M 11

是的,因为尚未安装扩展程序.设置此:extension-pkg-whitelist = cv2,你很高兴.但是,它可能无法检测到cv2中实现的功能或模块

在此输入图像描述

  • 如果您还添加代码段,那将是很好的选择,因为图像不可搜索,也无法[可复制粘贴](https://i.pinimg.com/originals/53/be/34/53be34c987b10821f7c10b9d88436b92.jpg) (2认同)
  • 感谢您提供的图片,它比没有上下文的单行代码片段更有帮助。 (2认同)

aur*_*lia 8

在 VSCode 中,编辑设置 JSON(Ctrl++ ShiftP>“首选项:打开设置 JSON)

然后,将以下内容粘贴到 JSON 中:

"python.linting.pylintArgs": [
    ... // prievious arguments
    "--generated-members=cv2.*"
]
Run Code Online (Sandbox Code Playgroud)

不知道为什么,但其他解决方案(白名单等)对我不起作用,而且我不想创建该.pylintrc文件。

  • 相当于在 .pylintrc 中设置 ` generated-members=cv2.*` 。 (3认同)