2015-07-22 94 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