VSCode 自动完成功能不适用于从源代码安装的 OpenCV

问题描述 投票:0回答:5

我只发现了另一个问题,但没有答案,所以我在这里问。

我运行的是 Ubuntu 18.04,VSCode 最新版本。

我已经从源代码安装了 OpenCV 3.4.9 到 /usr/local

当我导入 cv2 然后尝试输入“cv2.”时,VSCode 无法自动完成。它提出的唯一建议是“bootstrap”和“os”。我对 numpy 或 rospy 等任何其他模块的自动完成没有问题,甚至从 pip 安装 OpenCV 时也没有问题。似乎只有从源代码安装 OpenCV 时才会出现问题。

我已经尝试过语言服务器和 Jedi。我也尝试过各种短绒。

如有任何帮助,我们将不胜感激。

python python-2.7 visual-studio-code
5个回答
13
投票

这适用于那些在 Anaconda 上安装了 OpenCV 且 VSCode 无法建议 cv2 函数的人。

python.autoComplete.extraPaths
对我不起作用。所以根据这个答案

  1. 打开VSCode
  2. ctrl+shift+p
  3. 类型:
    Python: Create Terminal
  4. 在新终端中输入
    python -m pip install --upgrade opencv-python

3
投票

我也遇到了同样的问题。希望这有帮助

这是因为该软件包没有安装在通常的位置,而是安装在自定义位置。这个问题可以通过一些配置更改来解决。配置 settings.json 以包含自动完成功能的自定义位置。添加路径到

python.autoComplete.extraPaths

第 1 步:确定自定义库/模块的位置。

第 2 步:在用户设置或工作区设置文件中进行必要的更改。

这是用户设置中的示例条目(提及模块的确切位置)

    "C:/Program Files (x86)/---/---",
    "C:/Program Files (x86)/---/---/lib" ]

2
投票

如果是 Ubuntu 20.04 并手动安装 OpenCV4,则要添加到 extraPaths 的 python 库路径为“/usr/local/lib/python3.8/dist-packages/cv2/python-3.8”。假设在 cmake 期间使用了

-D CMAKE_INSTALL_PREFIX=/usr/local

例如:“settings.json”(VScode)

{
"python.analysis.memory.keepLibraryAst": true,
"python.defaultInterpreterPath": "/usr/bin/python3",
"python.autoComplete.extraPaths": [
 "/usr/local/lib/python3.8/dist-packages/cv2/python-3.8"
]}

1
投票

@Karthik S 非常有帮助,但我仍然无法使智能感知工作;添加

"python.jediEnabled": false, 

为我成功了;

总结一下我的settings.json 文件看起来像这样:

{
"python.analysis.memory.keepLibraryAst": true,
"python.defaultInterpreterPath": "/usr/bin/python3",
"python.jediEnabled": false, 
"python.autoComplete.extraPaths": [
    
    "/usr/local/lib/python3.8/dist-packages/cv2/python-3.8"
],
"python.languageServer": "Microsoft"

}

希望它能解决您的问题。 :)


0
投票

网上有很多票证、问题,其中许多人找到了不同的解决方案,这是我的。我和你面临着完全相同的事情。 Ubuntu 18.04 - OpenCV 4.7.0 从源代码构建 - Python - Vscode - 不自动完成

我的VEnv路径:/home/xxx/.virtualenvs/cv/lib/python3.8/site-packages/cv2/python-3.8/cv2.cpython-38-x86_64-linux-gnu.so

我将 cv2.cpython-38-x86_64-linux-gnu.so 的符号链接放入系统 python 中,该系统位于 /usr/lib/python3.8

(要做到这一点,你可以简单地

sudo ln /home/xxx/.virtualenvs/cv/lib/python3.8/site-packages/cv2/python-3.8/cv2.cpython-38-x86_64-linux-gnu.so /usr/lib/python3.8
)

并将 python 自动完成额外路径添加到 settings.json 中:

"python.autoComplete.extraPaths": [
    "/home/xxx/.virtualenvs/cv/lib/python3.8/site-packages/cv2/python-3.8"
],

打开settings.json:

how to add

我做的最后一件事是从 VSCode 中删除 Pylance 扩展。这是任何地方都没有写到的东西。卸载 Pylance 扩展后,自动完成功能突然一切正常 - 从源代码构建的智能感知 OpenCV。现在可以了。我希望它也适用于您的机器。

编辑:现在我只是发现 smt 的区别。我没有卸载 pylance,但注释掉了 settings.json 中的一部分。该部分是“python.analysis.extraPaths”。有一条自动生成的路径。当我注释掉它时,pylance 和 opencv intellisense 工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.