2015-07-22 92 views
10

在PyCharm中看到完全智能感知(代码完成)选项时出现问题。 在Windows上使用python 3.4。 的建议是部分工作:PyCharm intellisense for boto3

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 

,而我可以单独工作过的文档,智能感知就是这样一个很好的功能!

Ive有得到它完成LXML语法类似的问题,但我认为这是因为我不得不直接安装LXML为二进制(太多箍上的窗户跳经由PIP进行安装)

任何人遇到类似的问题?

虽然我们在这里, 我看到很多不同的库使用awscli与python:boto,boto3,troposphere等。使用一个优于另一个。亚马逊表示,boto3是boto的首选方法,但对于我的启动/停止ec2实例的使用可以很容易地用旧boto来完成。

+0

您是否尝试过更新PyCharm? 4.5.3出来了。 –

+0

我正在使用4.5.2。我认为这不会太重要,但我会试试看。 –

+0

没有帮助fyi。 –

回答

4

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

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

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

+2

感谢您的回应! 那么用boto3进行开发的正确方法是什么?依赖于那些文档和编码?看起来有点愚蠢的是要处理大量的功能,这些功能无法通过任何类型的python验证器进行验证。我在这里看到的另一个问题是,如果亚马逊服务的API更改此可能会破坏boto3脚本。我怀疑这会发生,但它没有一个独立的库的缺点。 有没有“预编译”这些模型的方法? –

+0

我很想知道这个答案。 – Pretzel

+0

对我而言,如果AWS API发生变化,这对任何SDK都是一个问题,而不仅仅是Boto3的问题,并且通过让底层代码可用于静态分析来解决问题。事实上,Boto3似乎更适合处理API更改,因为它是从规范生成的。 如果你问我,针对boto3进行开发的正确方法是,毫不奇怪,采用自动化测试 - 不一定是单元测试,而是集成测试。具体来说,请查看AWS公开的无处不在的干运行参数。 – jwilner

13

我对同样的问题感到沮丧。所以我决定解析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 
+0

感谢那个项目,只是pip现在就安装它,它像一个魅力 –

+0

那么s3.Bucket怎么样? “”“:键入:pyboto3.s3.Bucket”“” 似乎不起作用 –

+0

@PeterKahn资源不受支持。现在只有客户。 – gehad