我刚刚开始使用pycharm,python和opencv,我正在尝试设置我的环境.我已经安装了所有必需的软件包,我就像这样导入opencv:
import cv2
Run Code Online (Sandbox Code Playgroud)
但是,这不会自动完成并显示警告,调用时该方法可能会丢失,但如果我这样导入:
import cv2.cv2
Run Code Online (Sandbox Code Playgroud)
自动完成确实有效,但运行会产生以下错误:
Traceback (most recent call last):
File "C:/Users/dunnj/PycharmProjects/TransformApps/transformapps/blackwhite.py", line 1, in <module>
import cv2.cv2 as cv2
AttributeError: 'module' object has no attribute 'cv2'
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
小智 22
我的配置:
对我来说自动完成功能有效的步骤:
tldr:更新 python 解释器设置以指向<full path to venv>/lib/python3.9/site-packages/cv2
<full path to the venv>/lib/python3.9/site-packages/cv2
如果您使用不同的 Python 版本,.../python3.9... 将有所不同。到目前为止,这对我来说在三个不同的虚拟环境中都有效。对于其中两个,我必须重新启动 IDE 才能显示完成情况。剩下的一个不需要重新启动并立即工作。
Sol*_*lus 10
感谢ingolemo从R/learnpython.我被困在这里多年了,它让我发疯,所以我在这里分享.
我的OpenCV是使用包装器opencv-python包安装的
模块正在执行的sys.modules攻击是问题的根源.Pycharm没有完全导入模块以便知道它们内部是什么,所以动态地搞乱导入就像混淆pycharm一样.这不是pycharm的错,opencv-python维护者应该使用明星导入而不是那个混乱的导入黑客.您应该能够使用您偶然发现的技术解决问题.您所要做的就是捕获并忽略正常操作下的错误:
import cv2
# this is just to unconfuse pycharm
try:
from cv2 import cv2
except ImportError:
pass
Run Code Online (Sandbox Code Playgroud)