PyCharm Opencv - 使用import cv2.cv2自动完成,导入cv2没有错误

Soc*_*nix 5 python opencv

我刚刚开始使用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

我的配置:

  • macOS 11.6 上的 PyCharm 2021.2.3
  • Python 3.9.7 在虚拟环境(VE)中运行
  • 使用 PyCharm 终端窗口通过 pip 安装到 VE 中的 opencv-python 4.5.4.58

对我来说自动完成功能有效的步骤:

tldr:更新 python 解释器设置以指向<full path to venv>/lib/python3.9/site-packages/cv2

  1. 在首选项中,选择Python解释器
  2. 单击显示 Python 解释器的框右侧的设置图标(齿轮,然后选择显示全部
  3. 将显示所有已配置口译员的列表,其中当前口译员已高亮显示。
  4. 在您的解释器仍突出显示的情况下,单击顶部显示文件夹和子文件夹的图标。工具提示应显示“显示所选解释器的路径。
  5. 单击 + 按钮并添加以下路径: <full path to the venv>/lib/python3.9/site-packages/cv2 如果您使用不同的 Python 版本,.../python3.9... 将有所不同。
  6. 单击“确定”,直到返回主 IDE 窗口。

到目前为止,这对我来说在三个不同的虚拟环境中都有效。对于其中两个,我必须重新启动 IDE 才能显示完成情况。剩下的一个不需要重新启动并立即工作。


Sol*_*lus 10

感谢ingolemoR/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)


par*_*hal 8

只需在您的项目工作环境中执行以下命令即可。

  1. pip uninstall opencv-python
  2. pip install opencv-python==4.5.4.60