我是python的新手,并试图熟悉语法和语言。我向PyCharm IDE发了一枪,发现它很舒服。
唯一的问题是自动完成功能不如我预期的那样,对我来说非常重要,因为它是学习过程的一部分并且正在研究一些模块。
我查看了有关自动完成问题的所有其他问题,但没有一个可以帮助我。
即使没有自动完成功能,我的代码也能正常工作,但我已经习惯了,并且真的希望享受此功能。
我尝试来回更改我的项目interperter,没有任何改变。我试过重启PyCharm,电脑 - 没用。我尝试了Invalidate Cache,确保省电模式关闭 - nada。
还有其他想法吗?是否有负责PyCharm自动完成的副流程?如果是这样,它的名字是什么?这个问题是否存在于我的虚拟环境中?我看到包安装在其中所以可能是什么问题?
以下是lxml
缺少自动填充的示例:
这是interperter窗口:
请在这里帮助我,自动完成功能对我来说非常重要。
答案 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视频