我刚刚开始使用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
- 在首选项中,选择 Python 解释器
- 单击设置图标(显示您的 Python 解释器的框右侧的齿轮),然后选择全部显示
- 将显示所有已配置口译员的列表,并且您当前的口译员已突出显示。
- 在解释器仍突出显示的情况下,单击顶部显示文件夹和子文件夹的图标。工具提示应显示"显示所选解释器的路径。
- 单击 + 按钮并添加以下路径:
<full path to the venv>/lib/python3.9/site-packages/cv2
.../python3.9...如果您使用的是不同的 Python 版本,将会有所不同。 - 单击"确定",直到返回到 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
只需在项目工作环境中执行以下命令即可。
pip uninstall opencv-python
pip install opencv-python==4.5.4.60
建议的导入解决方案对我不起作用。 我在从源代码编译的 OpenCV 4.2.0 中遇到了这个问题,该源代码安装在我的 Conda 环境和 PyCharm 2020.1 中。
我以这种方式解决了:
- 选择项目口译员
- 单击旁边的设置按钮,然后单击显示所选口译员的路径
- 添加了包含 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 帮助了我:
- 在 PyCharm 中,从菜单打开文件 - 设置
- 转到 PROJECT:
并选择 PYTHON INTERPRETER - 单击解释器路径旁边的齿轮符号,然后选择全部显示。 确保选择了正确的口译员。
- 单击看起来像文件夹树的图标(在顶部)
- 点击"+"图标
- 选择 opencv 软件包所在的文件夹 通常(如果您通过包管理器安装它),您会在以下位置找到它:
\venv\Lib\site-packages\cv2 - 单击"确定"(两次)
- 等待更新骨架
安装绝地为我解决了这个问题。 您可以在终端中使用pip install jedi
您可以在此处找到有关绝地的更多信息:https://pypi.org/project/jedi/
我遇到了同样的问题。
我用了
import cv2 as cv2
之后都进口冰毒
尝试
try:
import cv2.__init__ as cv2
except ImportError:
pass
如果您使用的是 virtualenv,请在 Pycharm 项目设置中将 virtualenv 目录标记为在项目结构中排除。
以前遇到过这种情况。
- 在"Lib\site-packages\cv2"路径中找到"cv2.cp38-win_amd64.pyd"。
- 将其复制到"DLL"路径。
适用于系统 python 和 anaconda 环境(需要在 conda envs 路径中执行此操作)
附言。
">- 站点包"路径可以通过"pip --version"找到 ">
- DLLs"路径位于"Lib\site-packages....\DLLs">
这个问题用opencv-python==4.8.0.76版本解决了