Python 用于boto3的PyCharm智能感知

Python 用于boto3的PyCharm智能感知,python,pycharm,boto,aws-cli,boto3,Python,Pycharm,Boto,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. <<<<

在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 
导入boto3
s=boto3.Session()(boto3.将显示对象boto3的方法/参数列表)
ec2=s.resource('ec2')(resource是一个建议的方法!)

ec2 之所以会出现这种情况,是因为boto3客户端和资源对象上的所有方法都是在运行时基于描述服务支持的操作的JSON文件生成的。为了自动完成方法名,Pycharm必须对这个过程有具体的了解

对于第二个问题,boto3是Python的官方AWS SDK。boto3的主要优点之一是,由于这个JSON模型驱动的过程描述了AWSAPI,因此大多数新的服务功能只需要简单的模型更新。这意味着API更新以快速、一致和可靠的方式进行


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

我对同样的问题感到失望。所以我决定解析boto3文档并从文档中生成包装器类。这是该项目的链接

安装它

pip install pyboto3
使用它

import boto3
s3 = boto3.client('s3')
""" :type : pyboto3.s3 """
# s3. -> will give you autocomplete for s3 methods in pycharm
确保您首先:

  • 安装Pybot3->pip安装Pybot3 | pip3.x安装Pybot3
  • 检查您的解释器设置,并验证您是否在列表上看到Pybot3
  • 执行文件->使缓存无效/重新启动

  • Pycharm重新启动后,您应该看到intellisense对您有利,并且您尝试使用的服务的所有可用方法(在上面的s3中)都对您可用

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


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

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

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


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

    这里的房间有点拥挤,但我也创建了一个
    boto3
    打字解决方案(),
    boto3\u type\u注释。我采用了
    pyboto3
    方法,解析了服务对象的docstring,然后通过
    typing
    模块以编程方式为它们编写类定义、注释参数和返回类型。与
    pyboto3
    不同,我创建了一切,包括服务资源、分页器和服务员。还有一个选项,我将docstring放在其中,因此PyCharm的快速文档将起作用。但公平的警告是,这个一揽子计划真的很大

    # Without docs
    pip install boto3_type_annotations
    
    # Or with docs
    
    pip install boto3_type_annotations_with_docs
    
    确保您:

  • 安装Pybot3->pip安装Pybot3 | pip3.x安装Pybot3
  • 检查您的解释器设置,并验证您是否在列表上看到Pybot3
  • 执行文件->使缓存无效/重新启动

  • Pycharm重新启动后,您应该看到intellisense对您有利,并且您尝试使用的服务的所有可用方法都对您可用

    在讨论boto3的自动完成解决方案时,我很惊讶还没有人提到。可在任何IDE上工作,并自动保持最新状态。


    键入与VSCode、PyCharm、Emacs、Sublime Text、mypy、pyright和其他工具兼容的boto3 1.16.62的注释。

    您是否尝试过更新PyCharm?4.5.3已失效。我正在使用4.5.2。我不认为这有多重要,但我会试试。谢谢你的回复!那么,用boto3开发的正确方法是什么?依赖文档和编码吗?使用任何类型的python验证器都无法验证的大块功能似乎有点愚蠢。我在这里看到的另一个问题是,如果Amazon服务的API发生更改,这可能会破坏这两个脚本。我怀疑这会发生,但这是没有独立库的缺点。有没有一种方法可以“预编译”这些模型?我也想知道这个答案。在我看来,如果AWS API发生了变化,这对任何SDK都是一个问题,而不仅仅是Boto3的问题,并且不能通过让底层代码可用于静态分析来解决。实际上,Boto3似乎更适合处理API更改,因为它是根据规范生成的。如果你问我,针对boto3开发的正确方法是,毫不奇怪,使用自动化测试——不一定是单元测试,而是集成测试。具体来说,请查看AWS公开的无处不在的干运行参数。是否有方法预编译这些模型?(我从来没有考虑过dot完成任何形式的测试,所以,对我来说,测试和这个问题是相切的)这真是一个痛苦的问题,但我们必须接受它,我们不能像visual studio对awssdk那样智能感知两者。我多么希望我的老板想要一个aspnet应用程序,让生活更轻松感谢这个项目,只要pip现在就安装了它,它就像s3.Bucket的魅力一样工作?“”:type:pyboto3.s3.Bucket“”似乎不正确work@PeterKahn资源不受支持。现在只有客户了,谢谢。有总比没有好。在我这一方,使用pycharm社区2018.3是行不通的