在PyCharm中自动完成Python编译的扩展

Lat*_*ius 24 python autocomplete pycharm

当使用编译扩展(例如OpenCV Python绑定)编写Python代码时,PyCharm似乎并不知道它们的可用性.导入标有灰色下划线,将"未解析的引用"称为工具提示,自动完成也不起作用.(代码中已使用的函数名除外.)

这不是由错误的模块路径引起的,代码在启动时运行时没有错误.此外,在我导入Python shell中的模块后,自动完成开始按预期工作.

是否有解决方案或者这是编译扩展的架构限制?有没有其他IDE能够应对这个问题?

900*_*000 19

导入标有灰色下划线,将"未解析的参考"称为工具提示

这很可能意味着PyCharm无法看到您导入的模块.在编辑模式下,PyCharm依赖于导入模块的Python源的可用性.如果模块不是用Python编写的,而是C扩展模块,PyCharm会生成一个包含函数原型的"骨架",并将其用于完成.

在shell模式下,PyCharm使用实时导入的对象来完成,结果略有不同.

确保您为项目选择的Python解释器(File/Settings/Python解释器)可以看到OpenCV安装.如果解释器是正确的,请尝试删除并重新添加它(这很费时,抱歉).

如果没有任何帮助,请提交错误.


jo_*_*jo_ 10

我注意到 pycharm 行为的差异取决于导入方式。使用:

import cv2
Run Code Online (Sandbox Code Playgroud)

自动完成不起作用,

同时:

from cv2 import cv2
Run Code Online (Sandbox Code Playgroud)

自动完成工作


bb1*_*328 6

我不得不将二进制文件硬链接到我的解释器的文件夹 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
Run Code Online (Sandbox Code Playgroud)

路径可能因您的环境而异。我没有在 OSX 或 Windows 上测试它,但它也可以在那里工作。lib-dynload 文件夹在这里: 项目结构

  • 这非常适合我使用 python 3.6.9 构建的自定义 opencv 3.4.11 (2认同)