opencv PyLint无法识别cv2成员

6qqygrtg  于 2023-05-01  发布在  其他
关注(0)|答案(9)|浏览(172)

我在opencv项目上运行pylint,在VS代码中遇到很多关于成员不在场的pylint错误。
示例代码:

import cv2
cv2.imshow(....)

获得的误差:

但是,代码正确运行,没有任何错误。
版本:pylint 1.8.1星型16.0

hzbexzde

hzbexzde1#

这是皮林特写的。您可以使用以下命令在项目的根目录中生成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

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

oyxsuwqo

oyxsuwqo2#

1.在VScode上:CTRL + Shift + P
1.选择“首选项:打开设置(JSON)”
1.将这一行添加到JSON文件中:python.linting.pylintArgs”:["--generate-member”]
搞定,对我有用
注意:请确保选择“首选项:打开设置(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"] }
3df52oht

3df52oht3#

尝试像这样导入cv2:

from cv2 import cv2
d7v8vwbk

d7v8vwbk4#

是的,因为扩展还没有安装。设置extension-pkg-whitelist= cv 2,就可以开始了。但是,它可能无法检测到cv 2中实现的函数或模块。

afdcj2ne

afdcj2ne5#

这里是设置的代码片段。MS V Code中的json文件

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

cgyqldqp6#

在VSCode中,编辑设置JSON(Ctrl + Shift + P,〉“首选项:打开设置JSON)
然后,将以下内容粘贴到JSON中:

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

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

c90pui9n

c90pui9n7#

我不需要像这里的大多数答案那样在pylint Jason文件中更改任何内容。我的解决方案是将import语句更改为以下形式

from cv2 import cv2

最终,cv 2成员可以使用!

iqih9akk

iqih9akk8#

我在设置中使用了下面的配置设置。json的vscode,它帮助我避免了pylint不必要的标志,也得到了intellisense的cv 2工作,它不工作尝试卸载和删除cv 2包从C:\Anaconda 3\envs\demo 1\Lib\site-packages文件夹,并重新安装opencv-python包

{
"python.linting.pylintEnabled": true,
  "python.linting.enabled": true,
  "python.linting.pylintArgs": [
    "--extension-pkg-whitelist=cv2"
  ]
}
ltqd579y

ltqd579y9#

正如在closed pylint issue中所讨论的,extension-pkg-whitelist=cv2并不总是工作。同时,--generated-members=cv2.*解决了大部分时间的问题。因此,可以在命令行中将generated-members配置为pylint --generated-members=cv2.*,或者将pyproject.toml文件中的配置设置为

[tool.pylint.typecheck]
# 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.
generated-members = ["cv2.*"]

注意,上面的配置可以由pylint --generated-members=cv2.* --generate-toml-config根据official documentation自动生成。

相关问题