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



我刚刚开始使用PyCharm,python和OpenCV,我正在尝试设置我的环境。我已经安装了所有必要的软件包,并像这样导入OpenCV:

import cv2

但是,这不会自动完成并显示警告,指出调用该方法时可能丢失,但是如果我像这样导入:

import cv2.cv2

自动完成确实有效,但运行会产生以下错误:

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'

我的配置:

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

对我有用的步骤使自动完成工作:

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.../python3.9...如果您使用的是不同的 Python 版本,将会有所不同。
  6. 单击"确定",直到返回到 IDE 主窗口。

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

归功于 r/learnpython 的ingolemo。我被困在这个上面很久了,这让我发疯,所以我在这里分享。

我的 OpenCV 是使用包装器 opencv-python 包安装的


该模块正在做的系统模块黑客攻击是 问题。Pycharm 并不完全导入模块以了解 它们里面有什么,所以动态地弄乱导入 这让皮查姆非常困惑。这不是皮查姆的错,而是 OpenCV-Python 维护者应该使用星形导入而不是 那个混乱的进口黑客。您应该能够解决此问题 使用您偶然发现的技术。您所要做的就是抓住并 忽略正常操作下的错误:

import cv2
# this is just to unconfuse pycharm
try:
from cv2 import cv2
except ImportError:
pass

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

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

建议的导入解决方案对我不起作用。 我在从源代码编译的 OpenCV 4.2.0 中遇到了这个问题,该源代码安装在我的 Conda 环境和 PyCharm 2020.1 中。

我以这种方式解决了:

  1. 选择项目口译员
  2. 单击旁边的设置按钮,然后单击显示所选口译员的路径
  3. 添加了包含 cv2 库的目录(在我的情况下,在 Conda Python 库路径中 - 例如 miniconda3/lib/python3.7/site-packages/cv2/python-3.7)。一般检查 site-packages/cv2/python-X.X 目录)

以下来自 JetBrains 问题跟踪器 (https://youtrack.jetbrains.com/issue/PY-54649) 的解决方法 2 帮助了我:

  1. 在 PyCharm 中,从菜单打开文件 - 设置
  2. 转到 PROJECT:并选择 PYTHON INTERPRETER
  3. 单击解释器路径旁边的齿轮符号,然后选择全部显示。 确保选择了正确的口译员。
  4. 单击看起来像文件夹树的图标(在顶部)
  5. 点击"+"图标
  6. 选择 opencv 软件包所在的文件夹 通常(如果您通过包管理器安装它),您会在以下位置找到它:\venv\Lib\site-packages\cv2
  7. 单击"确定"(两次)
  8. 等待更新骨架

安装绝地为我解决了这个问题。 您可以在终端中使用pip install jedi

您可以在此处找到有关绝地的更多信息:https://pypi.org/project/jedi/

我遇到了同样的问题。
我用了

import cv2 as cv2

之后都进口冰毒

尝试

try:
import cv2.__init__ as cv2
except ImportError:
pass

如果您使用的是 virtualenv,请在 Pycharm 项目设置中将 virtualenv 目录标记为在项目结构中排除。

以前遇到过这种情况。

  1. 在"Lib\site-packages\cv2"路径中找到"cv2.cp38-win_amd64.pyd"。
  2. 将其复制到"DLL"路径。

适用于系统 python 和 anaconda 环境(需要在 conda envs 路径中执行此操作)

附言。

">
  1. 站点包"路径可以通过"pip --version"找到
  2. ">
  3. DLLs"路径位于"Lib\site-packages....\DLLs">

这个问题用opencv-python==4.8.0.76版本解决了

最新更新