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” 代码风格。

环境Python Anaconda 安装的 3.6 pysparkAWS Glue 安装 通过 pip

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

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

自动完成在其他示例中与库函数一起工作的原因是因为在那些情况下,Linter 不需要解析动态代码。库函数自己定的很清楚

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

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