26

在 PyCharm 中查看完整的智能感知(代码完成)选项时遇到问题。在 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 

虽然我可以单独处理文档,但智能感知是一个非常棒的功能!

我在完成 lxml 语法时遇到了类似的问题,但我认为这是因为我必须将 lxml 直接安装为二进制文件(在 windows 上跳过太多的箍来通过 pip 安装它)

还有其他人遇到类似的问题吗?

当我们在这里时,我看到很多不同的库围绕着将 awscli 与 python 结合使用:boto、boto3、troposphere 等。使用一个比另一个有什么优势。亚马逊表示 boto3 是比 boto 更受欢迎的方法,但对于我使用启动/停止 ec2 实例的方法来说,可以使用旧的 bo​​to 轻松完成。

4

9 回答 9

29

我对同样的问题感到沮丧。所以我决定解析 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. 安装 pyboto3 -> pip install pyboto3 | pip3.x 安装 pyboto3
  2. 检查您的解释器设置并确认您在列表中看到 pyboto3
  3. 做一个文件->使缓存无效/重新启动

在 Pycharm 重新启动后,您应该会看到智能感知对您有利,并且您尝试使用的服务的所有可用方法(在上述 s3 的情况下)都可供您使用!

于 2016-07-29T02:19:52.643 回答
11

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

对于您的第二个问题,boto3 是适用于 Python 的官方 AWS 开发工具包。boto3 的主要优势之一是,由于这种描述 AWS API 的 JSON 模型驱动过程,大多数新服务功能只需要简单的模型更新。这意味着 API 更新以快速、一致和可靠的方式进行。

但是,如果您在现有代码中使用 boto 并且它对您有用,请随时继续使用它。如果您需要引入新功能,您可以随时在 boto 旁边安装 boto3。

于 2015-07-28T16:22:27.840 回答
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

在此处输入图像描述

于 2018-11-14T06:47:14.147 回答
1

我喜欢 boto3,但我也很沮丧,因为每次我想提出一个简单的临时请求时,我都必须打开 boto3 文档。所以我写了autoboto:

https://pypi.org/project/autoboto/

它不只是自动完成。它还返回数据类,这意味着您不必查找返回对象的属性名称。PyCharm 会告诉你什么是可用的。

目前,由于所有通用序列化和反序列化,它也可能非常慢。

于 2018-09-09T22:06:05.807 回答
1

虽然正在讨论 boto3 的自动完成解决方案,但我很惊讶没有人提到botostubs。适用于任何 IDE 并自动保持最新。

于 2019-10-31T21:25:16.553 回答
0

可能不是官方方法,但我确实找到了可行的方法。在 PyCharm 中,打开 python 控制台(工具/python 控制台)。控制台的右侧也会有变量列表。如果您在控制台上初始化一个资源对象,它将在变量对象树中列出其子对象。一些有限的智能感知也是如此。

我开始这样做的方式是使用变量监视窗口作为备忘单将代码直接写入解释器。编写代码后,我将其复制/粘贴到实际的脚本文件中。笨重...

于 2018-05-25T00:38:00.437 回答
0

确保您:

  1. 安装 pyboto3 -> pip install pyboto3 | pip3.x 安装 pyboto3
  2. 检查您的解释器设置并确认您在列表中看到 pyboto3
  3. 做一个文件->使缓存无效/重新启动

在 Pycharm 重新启动后,您应该会看到智能感知对您有利,并且您尝试使用的服务的所有可用方法都可供您使用!

于 2019-06-15T15:14:20.367 回答
0

boto3-存根

boto3 1.16.62的类型注解兼容VSCode、PyCharm、Emacs、Sublime Text、mypy、pyright等工具。

于 2021-01-29T03:18:30.457 回答
0

这对我有用。如果您使用的是 python3

python3 -m pip install boto3-stubs

python3 -m pip install 'boto3-stubs[essential]'
于 2021-12-19T20:24:00.320 回答