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で簡単に実行できます。
これは、boto3クライアントとリソースオブジェクトのすべてのメソッドが、サービスがサポートする操作を記述したJSONファイルに基づいて実行時に生成されるために発生します。 Pycharmは、メソッド名をオートコンプリートするために、このプロセスに関する特定の知識を持っている必要があります。
2番目の質問ですが、boto3はPython用の公式AWSSDKです。 boto3の主な利点の1つは、AWS APIを記述するこのJSONモデル駆動型プロセスのため、ほとんどの新しいサービス機能は単純なモデルの更新のみを必要とすることです。これは、APIの更新が迅速、一貫性、信頼性の高い方法で行われることを意味します。
ただし、既存のコードでbotoを使用していて、それが機能している場合は、引き続き使用してください。新しい機能を取り込む必要がある場合は、いつでもbotoと一緒にboto3をインストールできます。
私は同じ問題に不満を感じていました。そこで、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
最初に確認してください:
Pycharmが再起動すると、インテリセンスが有利に機能し、使用しようとしているサービスで使用可能なすべてのメソッド(s3より上の場合)が使用可能になります。
ここでは部屋が少し混雑していますが、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
次のことを確認してください。
Pycharmが再起動すると、インテリセンスが有利に機能し、使用しようとしているサービスで利用可能なすべてのメソッドが利用できるようになります。
おそらく公式の方法ではありませんが、私はうまくいくものを見つけました。 PyCharmで、python console(tools/python console)を開きます。コンソールの右側にも変数リストがあります。コンソールでリソースオブジェクトを初期化すると、そのサブオブジェクトがあります。可変オブジェクトツリーにリストされています。一部の限定されたインテリセンスも同様です。
私がそれを始めた方法は、チートシートとして可変ウォッチウィンドウを使用してインタープリターにコードを直接書き込むことです。コードを記述したら、それをコピーして実際のスクリプトファイルに貼り付けます。不格好...
私はboto3が大好きですが、簡単なアドホックリクエストを行うたびに、boto3のドキュメントを開かなければならないことにも不満を感じていました。だから私はautobotoを書いた:
https://pypi.org/project/autoboto/
オートコンプリートだけではありません。また、データクラスを返します。つまり、返されたオブジェクトの属性の名前を検索する必要はありません。 PyCharmは何が利用できるかを教えてくれます。
現時点では、すべての一般的なシリアル化と逆シリアル化のため、おそらく非常に遅いです。
Boto3のオートコンプリートソリューションが議論されている間、誰も言及していないことに驚いています botostubs まだ。任意のIDEで動作し、自動的に最新の状態に保たれます。