我只发现了另一个问题,但没有答案,所以我在这里问。
我运行的是 Ubuntu 18.04,VSCode 最新版本。
我已经从源代码安装了 OpenCV 3.4.9 到 /usr/local
当我导入 cv2 然后尝试输入“cv2.”时,VSCode 无法自动完成。它提出的唯一建议是“bootstrap”和“os”。我对 numpy 或 rospy 等任何其他模块的自动完成没有问题,甚至从 pip 安装 OpenCV 时也没有问题。似乎只有从源代码安装 OpenCV 时才会出现问题。
我已经尝试过语言服务器和 Jedi。我也尝试过各种短绒。
如有任何帮助,我们将不胜感激。
这适用于那些在 Anaconda 上安装了 OpenCV 且 VSCode 无法建议 cv2 函数的人。
python.autoComplete.extraPaths
对我不起作用。所以根据这个答案:
Python: Create Terminal
python -m pip install --upgrade opencv-python
我也遇到了同样的问题。希望这有帮助
这是因为该软件包没有安装在通常的位置,而是安装在自定义位置。这个问题可以通过一些配置更改来解决。配置 settings.json 以包含自动完成功能的自定义位置。添加路径到
python.autoComplete.extraPaths
第 1 步:确定自定义库/模块的位置。
第 2 步:在用户设置或工作区设置文件中进行必要的更改。
这是用户设置中的示例条目(提及模块的确切位置)
"C:/Program Files (x86)/---/---",
"C:/Program Files (x86)/---/---/lib" ]
如果是 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"
]}
@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"
}
希望它能解决您的问题。 :)
网上有很多票证、问题,其中许多人找到了不同的解决方案,这是我的。我和你面临着完全相同的事情。 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:
我做的最后一件事是从 VSCode 中删除 Pylance 扩展。这是任何地方都没有写到的东西。卸载 Pylance 扩展后,自动完成功能突然一切正常 - 从源代码构建的智能感知 OpenCV。现在可以了。我希望它也适用于您的机器。
编辑:现在我只是发现 smt 的区别。我没有卸载 pylance,但注释掉了 settings.json 中的一部分。该部分是“python.analysis.extraPaths”。有一条自动生成的路径。当我注释掉它时,pylance 和 opencv intellisense 工作正常。