从源代码构建的OpenCV:Pycharm无法获取自动完成信息

问题描述 投票:1回答:2

我正在尝试将OpenCV安装到我的python环境(Windows)中,并且几乎已经完成了所有工作,但是在自动完成和Pycharm本身导入库方面仍然存在一些问题。我经历了无数其他相关主题,但似乎其中大多数主题要么已过时,针对预建版本,要么未得到答复。

我正在使用Anaconda,并且具有多个环境,但是不幸的是,通过pip install opencv-contrib-python安装它并没有包含我需要的一切。因此,我是从源代码构建的,并且库本身似乎运行良好。构建过程将一些东西安装到./Anaconda3/envs/cv/Lib/site-packages/cv2/中:__init__.py,一些config py文件和.../cv2/python-3.8/cv2.cp38-win_amd64.pyd。我不确定是否还有其他用途。

但是我在这里:

  • 在单独的环境中,pip install opencv-contrib-python既运行又可以自动完成工作
  • 在这种环境下,OpenCV实际上运行良好,但是自动完成功能不起作用,Pycharm抱怨所有内容,例如:Cannot find reference 'imread' in '__init__.py'
  • 使缓存无效/重新启动无济于事
  • 删除并重新添加环境无济于事
  • 删除Pycharm的用户首选项文件夹无济于事
  • 重建/安装OpenCV没有帮助
  • 文件->设置->项目->项目解释器设置正确
  • 运行->编辑配置-> Python解释器已正确设置

所以我的问题是:Pycharm如何获取或生成该自动完成信息?看起来pyd文件只是一个变相的dll,并且在其他环境的site-packages / cv2文件夹中浏览时,我看不到任何有趣的东西。我已经读到__init__.py与它有关,但是pip版本不包含任何内容(除了from .cv2 import *,但我不确定这是怎么造成的)。您可以下载的.whl文件是一个zip文件,仅包含与“ pip install”得到的文件相同的文件。

自动完成信息存储在哪里?也许有某种方法可以将其从一个环境复制到另一个环境?这几乎将我带到了那里,这点我认为就足够了。也许我需要用我错过的另一个标志重建它?

python python-3.x opencv pycharm anaconda
2个回答
0
投票

终于明白了!发布问题后将要发生的数字...

结果需要将.../envs/cv/site-packages/cv2/python-3.8/cv2.cp38-win_amd64.pyd复制到.../envs/cv/DLLs/。然后PyCharm做到了魔术,现在一切都很好。


0
投票

或者将包含.pyd文件的目录添加到解释器路径。

我在从Conda环境和PyCharm 2020.1安装的源代码编译的OpenCV 4.2.0中确实遇到了这个问题。

我这样解决:

  1. 选择项目解释器
  2. 单击旁边的设置按钮,然后单击显示所选解释器的路径
  3. 添加包含cv2库的目录(在本例中为Conda Python库路径-例如miniconda3 / lib / python3.7 / site-packages / cv2 / python-3.7)。通常检查site-packages / cv2 / python-X.X目录)
© www.soinside.com 2019 - 2024. All rights reserved.