web-dev-qa-db-ja.com

boto3のPyCharmインテリセンス

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 

ドキュメントだけで作業することはできますが、インテリセンスは非常に優れた機能です。

iveはlxml構文を完成させるのに同様の問題を抱えていましたが、それはlxmlをバイナリとして直接インストールする必要があるためだと思いました(Windowsでジャンプしてpip経由でインストールするにはフープが多すぎます)

他の誰かが同様の問題に遭遇しますか?

ここにいる間、Pythonでawscliを使用する際に、boto、boto3、troposphereなどのさまざまなライブラリが表示されます。一方を他方よりも使用することの利点は何ですか。 Amazonは、boto3がbotoよりも好ましい方法であると述べていますが、ec2インスタンスの開始/停止の私の使用法では、古いbotoで簡単に実行できます。

18
Alex C

これは、boto3クライアントとリソースオブジェクトのすべてのメソッドが、サービスがサポートする操作を記述したJSONファイルに基づいて実行時に生成されるために発生します。 Pycharmは、メソッド名をオートコンプリートするために、このプロセスに関する特定の知識を持っている必要があります。

2番目の質問ですが、boto3はPython用の公式AWSSDKです。 boto3の主な利点の1つは、AWS APIを記述するこのJSONモデル駆動型プロセスのため、ほとんどの新しいサービス機能は単純なモデルの更新のみを必要とすることです。これは、APIの更新が迅速、一貫性、信頼性の高い方法で行われることを意味します。

ただし、既存のコードでbotoを使用していて、それが機能している場合は、引き続き使用してください。新しい機能を取り込む必要がある場合は、いつでもbotoと一緒にboto3をインストールできます。

9
jamesls

私は同じ問題に不満を感じていました。そこで、boto3ドキュメントを解析し、ドキュメントからラッパークラスを生成することにしました。プロジェクトへのリンクは次のとおりです https://github.com/gehadshaat/pyboto

それをインストールするには

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より上の場合)が使用可能になります。

25
gehad

ここでは部屋が少し混雑していますが、boto3タイピングソリューション( GitHub link )、boto3_type_annotationsも作成しました。 pyboto3アプローチを採用し、サービスオブジェクトのdocstringを解析してから、プログラムでそれらのクラス定義を記述し、typingモジュールを使用して引数と戻り値の型に注釈を付けました。 pyboto3とは異なり、サービスリソース、ページネーター、ウェイターなどすべてを作成しました。 docstringを残したオプションもあるので、PyCharmのクイックドキュメントが機能します。しかし、公正な警告、そのパッケージは本当に大きいです。

# Without docs
pip install boto3_type_annotations

# Or with docs

pip install boto3_type_annotations_with_docs

enter image description here

2
Allie Fitter

次のことを確認してください。

  1. Pyboto3をインストール-> pip install pyboto3 | pip3.xインストールpyboto3
  2. インタプリタの設定をチェックして、リストにpyboto3が表示されていることを確認します
  3. ファイルの実行->キャッシュの無効化/再起動

Pycharmが再起動すると、インテリセンスが有利に機能し、使用しようとしているサービスで利用可能なすべてのメソッドが利用できるようになります。

0
lowlow20

おそらく公式の方法ではありませんが、私はうまくいくものを見つけました。 PyCharmで、python console(tools/python console)を開きます。コンソールの右側にも変数リストがあります。コンソールでリソースオブジェクトを初期化すると、そのサブオブジェクトがあります。可変オブジェクトツリーにリストされています。一部の限定されたインテリセンスも同様です。

私がそれを始めた方法は、チートシートとして可変ウォッチウィンドウを使用してインタープリターにコードを直接書き込むことです。コードを記述したら、それをコピーして実際のスクリプトファイルに貼り付けます。不格好...

0
arthur

私はboto3が大好きですが、簡単なアドホックリクエストを行うたびに、boto3のドキュメントを開かなければならないことにも不満を感じていました。だから私はautobotoを書いた:

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

オートコンプリートだけではありません。また、データクラスを返します。つまり、返されたオブジェクトの属性の名前を検索する必要はありません。 PyCharmは何が利用できるかを教えてくれます。

現時点では、すべての一般的なシリアル化と逆シリアル化のため、おそらく非常に遅いです。

0
jbasko

Boto3のオートコンプリートソリューションが議論されている間、誰も言及していないことに驚いています botostubs まだ。任意のIDEで動作し、自動的に最新の状態に保たれます。

0
szmktk