PyCharm intellisense为boto3

Ale*_*x C 16 python boto pycharm aws-cli boto3

在PyCharm中看到完整的intellisense(代码完成)选项时遇到问题.在Windows上使用python 3.4.建议部分工作:

import boto3
s = boto3.Session()  (boto3. will bring up list of methods/params of object boto3)
ec2 = s.resource('ec2') (resource is a suggested method!)
ec2. <<<< this brings up nothing. For some reason PyCharm cant detect that ec2 object would have 
Run Code Online (Sandbox Code Playgroud)

虽然我可以单独处理文档,但intellisense是一个很好的功能!

我有类似的问题让它完成lxml语法,但我认为那是因为我必须直接安装lxml作为二进制(太多的箍跳过窗口通过点子安装它)

其他人遇到类似的问题?

当我们在这里时,我看到很多不同的库使用awscli与python:boto,boto3,troposphere等.使用一个优于另一个有什么优点.亚马逊声称boto3是优于boto的方法,但是对于我使用较旧的boto可以很容易地使用启动/停止ec2实例.

geh*_*had 22

我对同样的问题感到沮丧.所以我决定解析boto3文档并从文档中生成包装类.这是项目https://github.com/gehadshaat/pyboto3的链接

安装它

pip install pyboto3
Run Code Online (Sandbox Code Playgroud)

使用它

import boto3
s3 = boto3.client('s3')
""" :type : pyboto3.s3 """
# s3. -> will give you autocomplete for s3 methods in pycharm
Run Code Online (Sandbox Code Playgroud)


jam*_*sls 9

发生这种情况是因为boto3客户端和资源对象上的所有方法都是在运行时基于描述服务支持的操作的JSON文件生成的.Pycharm必须具有关于此过程的特定知识才能自动完成方法名称.

对于您的第二个问题,boto3是适用于Python的官方AWS SDK.boto3的一个主要优点是,由于这个描述AWS API的JSON模型驱动过程,大多数新服务功能只需要简单的模型更新.这意味着API更新以快速,一致和可靠的方式发生.

但是如果您在现有代码中使用boto并且它正在为您工作,请随时继续使用它.如果需要提供新功能,可以随时在boto 3旁边安装boto3.

  • 谢谢你的回复!那么用boto3开发的正确方法是什么?依靠文档和编码?使用任何类型的python验证器都无法验证的大量功能似乎有点愚蠢.我在这里看到的另一个问题是,如果用于Amazon服务的API发生更改,则可能会破坏boto3脚本.我怀疑这会发生,但它的缺点是没有独立的库.有没有办法"预编译"这些模型? (2认同)
  • 这真的很痛苦,但我们必须忍受它,我们不能像 Visual Studio 对 awssdk 那样对 boto3 进行智能感知。我多么希望我的老板想要一个 aspnet 应用程序,让生活更轻松 (2认同)

All*_*ter 6

这里的房间有点拥挤,但我还创建了一个boto3打字解决方案(GitHub 链接boto3_type_annotations,. 我采用这种pyboto3方法并解析服务对象的文档字符串,然后以编程方式为它们编写类定义,并使用typing模块注释参数和返回类型。不像pyboto3我创建了一切,包括服务资源、分页器和服务员。还有一个选项可以让我保留文档字符串,这样 PyCharm 的快速文档就可以工作。但公平警告,这个包裹真的很大。

# Without docs
pip install boto3_type_annotations

# Or with docs

pip install boto3_type_annotations_with_docs
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述