gpt4 book ai didi

python - PyCharm 自动完成导入模块

转载 作者:行者123 更新时间:2023-12-01 02:01:59 24 4
gpt4 key购买 nike

我是 Python 新手,正在尝试熟悉其语法和语言。我尝试了一下 PyCharm,发现它非常舒服。

唯一的问题是自动完成功能没有像我预期的那样工作,作为学习过程和研究某些模块的一部分,它对我来说非常重要。

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

我尝试来回更改我的项目解释器,但没有任何改变。我尝试重新启动 PyCharm,计算机 - 不起作用。我尝试了“无效缓存”,确保省电模式已关闭 - 没有。

以下是 lxml 缺少自动完成功能的示例:

screenshot of editor

这是解释器窗口:

screenshot of system settings

最佳答案

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

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

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

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

(您可以通过检查type(tree)找出类型)

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

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

是的,一般来说,您必须习惯较少的自动完成以及一般类型信息和静态分析。幸运的是,我认为有很多东西可以弥补,这是其他语言无法做到的:)

关于python - PyCharm 自动完成导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49520815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com