Windows 中 OpenCV-Python 的自动完成功能不起作用
Posted
技术标签:
【中文标题】Windows 中 OpenCV-Python 的自动完成功能不起作用【英文标题】:Autocomplete for OpenCV-Python in Windows not working 【发布时间】:2013-09-11 09:34:12 【问题描述】:我无法在 Windows 上为 OpenCV (Python) 获得自动完成功能。
按照阿比德的指示here,我将cv2.pyd文件粘贴到了C:\Python27\Lib\site-packages中。
在Python代码中,我导入如下:
import cv2.cv as cv
我还安装了 numpy,它在站点包中创建了自己的文件夹,这与 OpenCV(我直接粘贴到站点包中)不同。
使用此设置,即使调用 OpenCV 方法,代码也可以毫无问题地执行。
但我无法让自动完成功能正常工作。我试图让它在 Sublime Text 2(使用 SublimeCodeIntel)和 PyCharm 上工作。在这两个 IDE 中,自动完成功能适用于 numpy 导入,但无法用于 OpenCV 导入。
我使用的是 OpenCV 2.4.6 和 Python 2.7(32 位)。
任何可能的解决方案?
【问题讨论】:
PyCharm 不支持是因为known bug。 啊。已知问题 FTW。但是,如果我只是在 PyCharm 中说 import cv2,它确实向我展示了该库的一些自动完成项。当然,这不能正确执行。但是,考虑到 .pyd 文件就像 .dll 一样,自动完成功能又是如何显示的呢? 【参考方案1】:它不起作用的原因是因为您使用的是.pyd
文件,即essentially the same as a compiled .dll
。自动完成功能通过读取源 .py
文件(纯文本)来工作。尝试从 Christoph Gohlke 的 Python Extension Packages for Windows 存储库安装 OpenCV
和英特尔数学内核库优化的 NumPy
软件包,该存储库经常更新,对于在 Windows 上进行任何类型的科学 Python 计算的任何人来说都是必备资源。确保首先从site-packages
中删除cv2.pyd
和numpy
目录。这些新包将安装 Sublime Text 中自动完成引擎所需的 .py
源文件。
编辑
好的,所以我写了上面的内容,因为它适用于许多其他包。我是一个 Python 3 人,我从来没有从 Gohlke 安装过 OpenCV,因为它只有 Python 2 绑定。在阅读了下面@CrazyCoder 的comment 之后,我启动了Win7,确实他是绝对正确的(我之前应该意识到这一点)——因为OpenCV 是用C/C++ 编写的,所以Gohlke 包中包含的唯一.py
文件是cv.py
,其全部内容如下:
from cv2.cv import *
其余的包含在cv2.pyd
和一堆.dll
s 中。来自opencv.org 的完整 OpenCV Windows 发行版是一个 291 MB 的下载文件,可扩展至 3 GB,其中的少数.py
文件涉及构建 OpenCV,对于自动完成目的没有任何好处。所以,不幸的是,我不知道目前是否有解决您的问题的方法。只需将docs 放在手边,也许可以查看2013 年4 月发布的Packt/O'Reilly 中的OpenCV Computer Vision with Python。
【讨论】:
这无济于事,至少对 PyCharm 没有帮助。您链接中的二进制 OpenCV 安装程序不会安装任何源。 麻烦。你是对的,出于某种原因,OpenCV 包 is 只是二进制文件,但 NumPy 包括源代码和二进制文件。我想这是因为大多数(如果不是全部)OpenCV 是用 C/C++ 编写的,而大多数 NumPy 是 Python,尽管它在 C 和 Fortran 中确实有一些功能。让我看看能不能找到解决方法... 无赖。感谢您付出努力来确定这是否可行。【参考方案2】:在 Windows 上构建自定义版本的 OpenCV 时,我遇到了与 PyCharm 相同的问题。这是我为修复它所做的:
OpenCV 在 Python site-packages
中创建了一个文件夹,如下所示:
opencv site-packages
所以您只需将python-3.9
文件夹添加到您的解释器即可。
文件 设置... Python 解释器 解释器旁边的三个点图标 -> 全部显示... 选择您的解释器并点击“显示所选解释器的路径”图标 在 cv2 站点包中添加文件夹
现在正常导入cv2模块。
【讨论】:
以上是关于Windows 中 OpenCV-Python 的自动完成功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章
《Nuitka打包实战指南》实战打包OpenCV-Python