当使用已编译的扩展(例如 OpenCV Python 绑定)编写 Python 代码时,PyCharm 似乎并没有意识到它们的可用性。导入用灰色下划线标记,将“未解析的引用”作为工具提示,并且自动完成功能也不起作用。(代码中已经使用的函数名除外。)
这不是由错误的模块路径引起的,代码在启动时运行没有错误。此外,在我将模块导入 Python shell 后,自动完成功能开始按预期工作。
是否有解决方案,或者这是编译扩展的架构限制?有没有其他 IDE 可以解决这个问题?
当使用已编译的扩展(例如 OpenCV Python 绑定)编写 Python 代码时,PyCharm 似乎并没有意识到它们的可用性。导入用灰色下划线标记,将“未解析的引用”作为工具提示,并且自动完成功能也不起作用。(代码中已经使用的函数名除外。)
这不是由错误的模块路径引起的,代码在启动时运行没有错误。此外,在我将模块导入 Python shell 后,自动完成功能开始按预期工作。
是否有解决方案,或者这是编译扩展的架构限制?有没有其他 IDE 可以解决这个问题?
导入用灰色下划线标记,表示“未解析的引用”作为工具提示
这很可能意味着 PyCharm 看不到您导入的模块。在编辑模式下,PyCharm 依赖于导入模块的 Python 源的可用性。如果一个模块不是用 Python 编写的,而是一个 C 扩展模块,PyCharm 会生成一个包含函数原型的“骨架”,并使用它来完成。
在 shell 模式下,PyCharm 使用实时导入的对象来完成,结果略有不同。
确保您为项目选择的 Python 解释器(文件/设置/Python 解释器)可以看到您的 OpenCV 安装。如果解释器是正确的,请尝试删除并重新添加它(这有点耗时,抱歉)。
如果没有任何帮助,请提交错误。
我注意到根据导入方式的不同,pycharm 的行为有所不同。使用:
import cv2
自动完成不起作用,
同时:
from cv2 import cv2
自动完成作品
我不得不将二进制文件硬链接到我的解释器的 lib-dynload 文件夹中。
$ cd /usr/lib/python3.7/lib-dynload
$ sudo ln /usr/local/lib/python3.7/dist-packages/cv2/python-3.7/cv2.cpython-37m-x86_64-linux-gnu.so cv2.cpython-37m-x86_64-linux-gnu.so
路径可能因您的环境而异。我没有在 OSX 或 Windows 上测试它,但它也可以在那里工作。lib-dynload 文件夹在这里:
PyCharm 目前不扫描已编译的扩展/二进制文件,这些扩展/二进制文件位于手动添加到 IDE 解释器的路径中。我在YouTrack中向 Jetbrains 提交了一个错误。你可能想看看它,可能还有我在他们的论坛中发起的讨论(链接在错误描述中)。如果您是面临同样问题的 PyCharm 用户,如果您能投票支持在 YouTrack 中解决此问题,我将不胜感激。
尝试单击文件 | 中的“重新加载”按钮 设置 | IDE 设置 | Python 解释器。这让它对我有用。
在我的 OS X 10.8 和 PyCharm 3 上,IDE 会自动选择不同的 Python 安装。我在 Eclipse Pydev 中注意到了这一点,它选择了正确的一个并按预期工作。不容易注意到两者之间的区别:/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python
我按照这个问题下的说明进行操作: How to install OpenCV on Windows and enable it for PyCharm without using the package manager
之后它不起作用,我重新安装了 pycharm ide,没有任何其他更改,现在它工作正常。我知道这不是最好的答案,但是在浪费了很多时间并尝试了不同的解决方法之后,这是解决我问题的方法,我希望它可以帮助你。
经过两天的测试,我终于解决了这个问题: 区别:
opencv-python
有一些中文字符。它应该只有英文)。然后做:
opencv-contrib-python
.就我而言,将 opencv 包含在路径install-opencv-4-on-windows中。并将其添加到项目设置中,如果这些都不适合您,我建议您安装 anaconda 更改 python 解释器并使用 anaconda 解释器。
为此,请转到:file -> settings -> project:test -> python interpreter
并选择 conda 解释器
如果你没有 anaconda,你可以在https://www.anaconda.com/下载
按照链接python-opencv中的步骤在 anaconda 中安装 opencv
我讨厌给出“为我工作”的答案,但也许我环境的详细信息将帮助您最终确定问题。
我以前从未使用过 PyCharm,但我只是在 Mac 10.6.6 上使用 PyCharm 1.1.1 和 Macports opencv +python26 进行了测试。自动完成第一次对我来说很好。我还关闭并重新运行了 PyCharm,无需进一步操作即可自动完成。对于我尝试过的其他本机扩展,例如 cjson、procname,我也没有自动完成的问题。
.
也许这是特定于平台的问题(Windows?),或者是影响旧版本 PyCharm 的错误?