在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
虽然我可以单独处理文档,但intellisense就是这样一个很好的功能!
我有类似的问题让它完成lxml语法,但我认为这是因为我必须直接安装lxml作为二进制文件(太多的箍跳过窗口通过pip安装它)
其他人遇到类似的问题吗?
我们在这里的时候, 我看到很多不同的库都在使用awscli和python:boto,boto3,troposphere等。使用一个优于另一个有什么好处。亚马逊声称boto3是优于boto的方法,但是对于我使用较旧的boto可以很容易地使用启动/停止ec2实例。
答案 0 :(得分:21)
我对同样的问题感到沮丧。所以我决定解析boto3文档并从文档中生成包装类。这是项目的链接 https://github.com/gehadshaat/pyboto3
安装
pip install pyboto3
使用它
import boto3
s3 = boto3.client('s3')
""" :type : pyboto3.s3 """
# s3. -> will give you autocomplete for s3 methods in pycharm
答案 1 :(得分:7)
This is happening because all of the methods on the boto3 clients and resource objects are generated at runtime based on a JSON file that describes what operations the service supports. Pycharm would have to have specific knowledge about this process in order to auto complete method names.
For your second question, boto3 is the official AWS SDK for Python. One of the main advantages of boto3 is that because of this JSON model driven process that describes the AWS APIs, most new service features only require a simple model update. This means API updates happen in a quick, consistent, and reliable manner.
But if you're using boto in existing code and it's working for you, feel free to keep using it. You can always install boto3 along side boto if you need to pull in new functionality.
答案 2 :(得分:1)
这里的房间有点拥挤,但我还创建了boto3
的{{1}}键入解决方案(GitHub link)。我采用了boto3_type_annotations
方法,解析了服务对象的文档字符串,然后以编程方式为它们编写了类定义,并使用pyboto3
模块为注释的参数和返回类型编写了代码。与typing
不同,我创建了包括服务资源,分页器和服务员在内的所有内容。我还有一个选项可以保留文档字符串,因此PyCharm的快速文档可以使用。但是有一个合理的警告,这个包裹确实很大。
pyboto3
答案 3 :(得分:0)
可能不是官方方法,但我确实找到了有效的方法。 在PyCharm中,打开python控制台(tools / python console)。控制台右侧还有变量列表。如果在控制台上初始化资源对象,则会在变量对象树中列出其子对象。一些有限的智力感知。
我开始这样做的方法是使用变量监视窗口作为备忘单将代码直接写入解释器。编写代码后,我将其复制/粘贴到实际的脚本文件中。笨重...
答案 4 :(得分:0)
我喜欢boto3,但每次我要提出一个简单的临时请求时,我都必须打开boto3文档,这让我感到沮丧。所以我写了autoboto:
https://pypi.org/project/autoboto/
它不仅会自动完成。它还返回数据类,这意味着您不必查找返回对象的属性名称。 PyCharm会告诉您可用的内容。
目前,由于所有通用序列化和反序列化,它可能也非常慢。
答案 5 :(得分:0)
确保您:
Pycharm重新启动后,您应该会看到intellisense对您有利,并且您尝试使用的服务的所有可用方法都对您有用!
答案 6 :(得分:0)
正在讨论boto3的自动完成解决方案时,我很惊讶没有人提到botostubs。可在任何IDE上运行,并自动保持最新状态。
答案 7 :(得分:0)
boto3 1.16.62 的类型注解,兼容VSCode、PyCharm、Emacs、Sublime Text、mypy、pyright 等工具。