Pycharm自动完成导入的模块

时间:2018-03-27 19:16:29

标签: python autocomplete pycharm

我是python的新手,并试图熟悉语法和语言。我向PyCharm IDE发了一枪,发现它很舒服。

唯一的问题是自动完成功能不如我预期的那样,对我来说非常重要,因为它是学习过程的一部分并且正在研究一些模块。

我查看了有关自动完成问题的所有其他问题,但没有一个可以帮助我。

即使没有自动完成功能,我的代码也能正常工作,但我已经习惯了,并且真的希望享受此功能。

我尝试来回更改我的项目interperter,没有任何改变。我试过重启PyCharm,电脑 - 没用。我尝试了Invalidate Cache,确保省电模式关闭 - nada。

还有其他想法吗?是否有负责PyCharm自动完成的副流程?如果是这样,它的名字是什么?这个问题是否存在于我的虚拟环境中?我看到包安装在其中所以可能是什么问题?

以下是lxml缺少自动填充的示例:

这是interperter窗口:

enter image description here

请在这里帮助我,自动完成功能对我来说非常重要。

2 个答案:

答案 0 :(得分:3)

Python是一种动态类型语言,因此函数的返回类型并不总是事先知道。 PyCharm通常会查看函数的来源,以猜测它返回的内容。在这种情况下,它不能因为etree.parse是用Cython而不是Python编写的。如果你要求PyCharm转到函数的定义,它会给你一个存根。

Python生态系统最近开始解决这个问题,它提供了各种方法来注释带有类型提示的文件,供外部工具使用,包括PyCharm。一种方法是通过.pyi个文件。可以在类型化项目中找到大量这些集合。 This issue表明,为lxml编写提示证明是困难的,并且不希望在类型化仓库中有不完整的存根,它们被移动到他们自己的仓库here。存根确实非常不完整,当我尝试在PyCharm中下载并使用它们时,结果非常糟糕。他们正确地确定etree.parse返回etree._ElementTree,但the stub for _ElementTree只有两种方法。

我通过直接在Python文件中注释得到了更好的结果,例如

tree = etree.parse(path)  # type: etree._ElementTree

(您可以通过查看type(tree)

找出类型

PyCharm本身知道_ElementTree上的方法是什么,所以现在自动完成工作。不幸的是,似乎使用.pyi文件会让PyCharm忘记这些知识。

Here是关于PyCharm中类型提示的文档。

是的,一般来说,你必须习惯较少的自动完成和一般类型信息和静态分析。幸运的是,我认为有很多东西可以补偿,这在其他语言中是不可能的:)

答案 1 :(得分:0)

安装KITE,它是python的超快速自动建议引擎。它适用于Pycharm,Sublime等... 有关更多详细信息,请观看此youtube视频