解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)


Posted in Python onMarch 05, 2020

发现问题

当我用pip安装好opencv-pyton后,我激动得在python项目中导入cv2
就像这样:

import cv2 as cv

but…
码代码时竟然没有自动补全!!!这我还能忍,可是CTRL+左键竟然不能看源码!!!!!!就像这样:

解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

这我就受不了了。于是开始找解决方法

解决问题

查找解决方法,
有的说要将cv2.cp36-win_amd64.pyd文件挪到site-packages下;
有的说要修改_init_.py文件
有的说…

直到我看到https://segmentfault.com/q/1010000008971601这篇文章

解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

于是突然顿悟!

解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

原来真正的实现opencv功能的cv2模块是在cv2/data文件夹下

而cv2下的_init_.py文件内描述的也很清楚

import importlib
from .cv2 import *
from .data import *

# wildcard import above does not import "private" variables like __version__
# this makes them available
globals().update(importlib.import_module('cv2.cv2').__dict__)

它的目的就是将cv2/data/下的真正的cv2功能模块放在cv2目录下,也就意味着
变成了这种形式:cv2/cv2

所以你在导入cv2模块儿时要这样做

解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

正确的做法

import cv2.cv2 as cv

自动提示的功能出现了。

解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

CTRL+鼠标左键查看源码的功能也回来了。

解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

针对一些疑惑进行可能的解答,也不知道对不对。

由于我之前升级过IDE,所以这个项目是我从外部导入的,首先我为这个项目选择python解释器路径,然后就会出现下图的进度条。(这个项目在构建之初,用virtualenv建立了一个独立的环境,所以python解释器选择的是项目路径下的。)

库文件在刚刚被添加到项目中时,pycharm会针对这个库文件,构建索引(building index)。然后会显示一个进度条,在进度条走完之前,使用这个库中的方法确实会出现无法自动提示的问题。

解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

等待进度条走完,也就是python环境中的库都被构建索引,然后再使用库中的方法,自动提示就有了。

这是我新建的.py文件,然后进行的测试

解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

总结

到此这篇关于解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)的文章就介绍到这了,更多相关pycharm opencv-python导入cv2无法自动补全内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现将绝对URL替换成相对URL的方法
Jun 28 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
python中字符串的操作方法大全
Jun 03 Python
详解Numpy中的广播原则/机制
Sep 20 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Python实现自动整理文件的脚本
Dec 17 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 #Python
python环境下安装opencv库的方法
Mar 05 #Python
Python序列化pickle模块使用详解
Mar 05 #Python
Window系统下Python如何安装OpenCV库
Mar 05 #Python
Python bytes string相互转换过程解析
Mar 05 #Python
Python 从attribute到property详解
Mar 05 #Python
Python+OpenCV实现图像的全景拼接
Mar 05 #Python
You might like
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
基于PHP+Ajax实现表单验证的详解
2013/06/25 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
tensorflow多维张量计算实例
2020/02/11 Python
Python3运算符常见用法分析
2020/02/14 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
全球立体声:World Wide Stereo
2018/09/29 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
会计职业生涯规划范文
2014/01/04 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
学习作风建设心得体会
2014/10/22 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
2014年学前班工作总结
2014/12/08 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书