PyCharm中Python编译扩展的自动完成
在用Python写代码的时候,如果使用了编译扩展(比如OpenCV的Python绑定),PyCharm似乎无法识别这些扩展的存在。导入的部分会被标记为灰色下划线,并显示“未解决的引用”这样的提示,自动补全功能也无法正常工作。(除了代码中已经使用过的函数名。)
这并不是因为模块路径错误,代码运行时没有报错。而且,当我在Python命令行中导入这些模块后,自动补全功能就能正常工作了。
有没有解决办法,还是说这是编译扩展的一个架构限制?有没有其他的开发环境能够处理这个问题?
11 个回答
10
我发现,在使用不同的导入方式时,pycharm的表现有些不同。
使用:
import cv2
自动补全功能就不管用了,
而使用:
from cv2 import cv2
自动补全功能就能正常工作。
19
导入的部分下面有灰色下划线,提示“未解决的引用”。
这很可能意味着PyCharm看不到你导入的模块。在编辑模式下,PyCharm需要能找到你导入模块的Python源代码。如果一个模块不是用Python写的,而是用C语言扩展的,PyCharm会生成一个“骨架”,里面包含函数的基本信息,然后用这个来帮助你完成代码。
在命令行模式下,PyCharm会使用实时导入的对象来帮助你完成代码,结果会稍有不同。
确保你的OpenCV安装对你为项目选择的Python解释器是可见的(可以在文件/设置/Python解释器中查看)。如果解释器没问题,可以尝试先删除再重新添加它(这可能会花点时间,抱歉)。
如果还是不行,可以提交一个bug。