【问题标题】:OpenCV built from source: Pycharm doesn't get autocomplete information从源代码构建的 OpenCV:Pycharm 无法获取自动完成信息
【发布时间】:2020-07-26 03:35:50
【问题描述】:

我正在尝试将 OpenCV 安装到我的 python 环境 (Windows) 中,而且我几乎已经安装完毕,但在自动完成和 Pycharm 本身导入库时仍然存在一些问题。我经历过无数其他相关主题,但似乎大多数主题要么已经过时,要么是预构建版本,要么没有答案。

我正在使用 Anaconda 并且有多个环境,不幸的是通过 pip install opencv-contrib-python 安装它并没有包含我需要的一切。所以,我从源代码构建了它,库本身似乎工作正常。构建过程将一些东西安装到./Anaconda3/envs/cv/Lib/site-packages/cv2/__init__.py、一些配置 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”获取的内容相同的内容。

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

【问题讨论】:

  • 我正在使用 Anaconda 并且有多个环境,不幸的是通过 pip install opencv-contrib-python 安装它并没有包含我需要的所有内容。 如果您正在使用conda,那为什么要通过 pip 安装库呢? 所以,我是从源代码构建的 只需conda install opencv

标签: python opencv pycharm anaconda conda


【解决方案1】:

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

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

【讨论】:

  • 这里有同样的问题.. 但在 Ubuntu 上.. 有什么建议吗?
  • 在我的例子中,将.pyd 文件复制到 DLLs 文件夹后。需要删除site-packages/cv2/python-3.8/下原来的cv2.cp38-win_amd64.pyd
【解决方案2】:

或者将包含 .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目录)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2014-10-12
    • 2020-04-01
    • 2014-01-22
    • 2020-08-11
    • 1970-01-01
    • 2015-04-26
    相关资源
    最近更新 更多