问题描述

笔者先是在终端安装了 opencv-python 最新版本(4.7.0.72),并在文件头导入了 cv2

但是发现 cv2 的一些全局变量与函数签名无法不全,PyCharm 想要看某个函数的定义文档也是跳转不过去。不过实际调用是可以的,执行结果也是正常的。

image-20230531095440713.webp

问题分析

既然实际功能不受影响,只是 IDE 找不到定义,因此无法进行解析函数签名,代码补全,来源跳转,函数文档生成等操作。

解决办法

ctrl+alt+sFile - Settings打开设置页面,找到 Project - Python interpreter页面。[^1]

  1. 在上方的 Python 解释器选择框,点击框里面右边的下三角,选择 Show All
    image-20230531095130824.webp

  2. 在弹出的二级窗口中,依次点选当前使用的解释器名称,再点击树形文件结构层次图标(Show Interpreter Paths) 将会显示现有的解释器 Paths。
    image-20230531103043501.webp

  3. 我们将 cv2 在 conda 虚拟环境中的安装路径添加进来。
    image-20230531103736102.webp

  4. 最后,从内而外,逐个点 OK 保存设置并关闭窗口,PyCharm 会自行更新 cv2 索引和解析代码骨架(skeletons)。
    image-20230531104004487.webp

  5. 最后,等后台更新任务跑完,再回到代码编辑页面,可以看到 cv2 的函数名下面没有波浪线,而且 cv2 符号补全、定义跳转也好使了。
    image-20230531104559870.webp

Tips:
操作完成后若依然还是不能自动补全,建议使用 File - Invalidate Caches 清理缓存并重启编辑器。

文章小结

本文提供一个关于 OpenCV Python 库代码可正常执行,但 IDE 却不能代码补全的问题的解决思路。由于 Python 解释器 Paths 设置页面藏得比较深,请按截图依次进行操作。另外,此处的设置是具体到每个解释器的,因此没法直接写入到环境变量中,需要单独进行配置,后续若有更好的方案再做更新。

参考链接

  1. PyCharm cannot find cv2 references with the most recent version #20997

添加新评论