PyLint 不能识别 cv2成员

我在一个 opencv 项目上运行 pylint,在 VS 代码中发现许多 pylint 错误,因为成员不存在。

示例代码:

import cv2
cv2.imshow(....)

获得的错误:

enter image description here

但是,代码运行正确,没有任何错误。

版本: pylint 1.8.1,astroid 1.6.0

61152 次浏览

是的,这是因为扩展尚未安装。 设置这个扩展名-pkg-whitelist = cv2,就可以开始了。 但是它可能无法检测到在 cv2中实现的函数或模块

enter image description here

您可以使用以下命令在项目的根目录中生成一个 pylint 配置文件: (我发现,如果你在一个团队中工作,或者在同一个回购的不同计算机上工作,这会很有帮助)

pylint --generate-rcfile > ~/.pylintrc

在生成的.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=

添加 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

保存文件。 棉绒错误应该消失。

下面是 MS V Code 中 setings.json 文件的代码片段

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

我在 vscode 的 setings.json 中使用了下面的配置设置,它帮助我避免了 pylint 中不必要的标志,并且还获得了 cv2工作的智能感知, 尝试从 C: Anaconda3 envs demo1 Lib site-package 文件夹中卸载和删除 cv2包并重新安装 opencv-python 包是不起作用的

{
"python.linting.pylintEnabled": true,
"python.linting.enabled": true,
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=cv2"
]
}
  1. 在 VScode 中: CTRL + Shift + P
  2. 选择“首选项: 打开设置(JSON)”
  3. 将这一行添加到 JSON 文件: “ python.linting. pylintArgs”: [“—— generated- 成员”]

成交,我没问题

注意: 请确保选择“ Preferences: Open Settings (JSON)”,而不是“ Preferences: Open Default Settings (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"] }

尝试像下面这样导入 cv2:

from cv2 import cv2

我不需要像这里的大多数答案一样修改 pylint Jason 文件中的任何内容,我的解决方案是将 import 语句修改为下面的表单

from cv2 import cv2

最终,可以使用 cv2成员!

在 VSCode 中,编辑设置 JSON (Ctrl + Shift + P,> “ Preferences: Open Settings JSON)

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

"python.linting.pylintArgs": [
... // prievious arguments
"--generated-members=cv2.*"
]

不知道为什么,但其他解决方案(allowlist 等)不适合我,我不想创建 .pylintrc文件。