繁体   English   中英

PyCharm 没有针对 AWS Glue Python 的自动完成功能

[英]PyCharm has no auto-completion for AWS Glue Python

我是 Python 和 AWS Glue 的新手,在某些情况下无法启用自动完成功能。

第一种情况:

dynamic_frame 没有 API 列表

在此处输入图片说明

如果我强制创建 spark DataFrame,则不显示 API 列表,似乎DataSource0未知。

在此处输入图片说明

但是glueContext显示了API 列表:

在此处输入图片说明

第二种情况:

可以创建 Spark DataFrame 并显示 API 列表 由于我是 AWS Glue 的新手,我不确定这是使用 DynamicFrame 对象进行 DF 转换的最佳实践,而不是直接使用.toDF()以及会产生什么影响。

在此处输入图片说明

在此处输入图片说明

第三种情况:

定义类型以显示 API 列表 再说一次,我是 Python 新手,我来自 C/JAVA/SCALA 背景,所以我不知道这是否会很奇怪或“非 Python”代码风格。

在此处输入图片说明

环境由 Anaconda pyspark安装的 Python 3.6和通过 pip安装的 AWS Glue

在此处输入图片说明

要解决第一种情况,请尝试在变量DataSource0 : DynamicFrame前面放置类型提示。

IDE 的 Linter 尝试在单独的后台进程中运行您的代码以解析类型并填充自动完成列表。 如果使用类型提示,则是在帮助 Linter 确定属性的类型,因此 IDE 不必动态确定类型。

自动完成功能与其他示例中的库函数一起使用的原因是因为在这些情况下,Linter 不需要解析动态代码。 库函数本身是明确确定的。

有时 PyCharm 也需要几秒钟来解决自动完成,所以不要强制菜单,给它几秒钟让后台 Linter 进程在写入变量和点之间完成(之后Ctrl+Space显示自动-完全的)。

在您的情况下,这些库函数也有多个深度级别,这使得解决 IDE 的自动建议更重。 在这种情况下,扁平确实比嵌套更好。 但这不是问题,只是不便,只要代码正确,它将在运行时按预期执行(如果没有自动建议的偶尔帮助,它确实会使编写代码更加困难)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM