2015-07-22 17 views
10

Probleme mit den vollständigen IntelliSense-Optionen (Code-Vervollständigung) in PyCharm. Arbeiten mit Python 3.4 unter Windows. das deutet darauf hin, teilweise arbeiten:PyCharm intellisense für 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 

während ich Dokumentation alleine abarbeiten kann, Intellisense ist so ein nettes Feature zu haben!

ive hatte ähnliche Probleme bekommen es lxml Syntax zu beenden, aber ich dachte, das war, weil ich lxml direkt als binäre zu installieren hatte (zu viele Reifen auf Fenster zu springen durch sie über pip installieren)

Wer sonst Ähnliche Probleme?

Während wir hier sind, Ich sehe viele verschiedene Bibliotheken rund um die Verwendung von awscli mit Python: Boto, Boto3, Troposphäre usw. Was sind einige Vorteile der Verwendung von einem über den anderen. Amazon sagt, dass Boto3 die bevorzugte Methode gegenüber Boto ist, aber für meine Verwendung von Start/Stopp ec2-Instanzen könnten leicht mit älteren Boto durchgeführt werden.

+0

Haben Sie versucht, Ihren PyCharm aktualisieren? 4.5.3 ist out. –

+0

Ich benutze 4.5.2. Würde nicht denken, dass es so viel ausmachen würde, aber ich werde es versuchen. –

+0

half nicht fyi. –

Antwort

4

Dies geschieht, weil alle Methoden auf den boto3-Clients und Ressourcenobjekten zur Laufzeit basierend auf einer JSON-Datei generiert werden, die beschreibt, welche Operationen der Service unterstützt. Pycharm müsste spezielle Kenntnisse über diesen Prozess haben, um die Methodennamen automatisch zu vervollständigen.

Für Ihre zweite Frage ist boto3 das offizielle AWS SDK für Python. Einer der Hauptvorteile von boto3 besteht darin, dass aufgrund dieses JSON-modellgesteuerten Prozesses, der die AWS-APIs beschreibt, die meisten neuen Dienstfeatures nur eine einfache Modellaktualisierung erfordern. Dies bedeutet, dass API-Updates schnell, konsistent und zuverlässig durchgeführt werden.

Aber wenn Sie BTO in bestehenden Code verwenden und es für Sie arbeitet, fühlen Sie sich frei, es weiter zu verwenden. Sie können boto3 immer zusammen mit Side-Boto installieren, wenn Sie neue Funktionen nutzen müssen.

+2

Danke für die Antwort! Also, was ist die richtige Art der Entwicklung mit Boto3? Verlassen Sie sich auf Dokumentation und Codierung? Es scheint etwas albern zu sein, mit so großen Funktionen zu arbeiten, die von keinem Python-Validator validiert werden können. Ein anderes Problem, das ich hier sehe, ist, wenn eine API für einen Amazon-Service dies ändert, könnte dies möglicherweise boto3-Skripte brechen. Ich bezweifle, dass dies passieren würde, aber es ist der Nachteil, keine eigenständige Bibliothek zu haben. Gibt es eine Möglichkeit, diese Modelle vorzukompilieren? –

+0

Ich würde gerne diese Antwort auch wissen. – Pretzel

+0

Scheint mir, wenn eine AWS-API ändert, das ist ein Problem für jedes SDK, nicht nur Boto3, und es wird nicht gelöst, indem der zugrunde liegende Code für die statische Analyse verfügbar ist. In der Tat scheint Boto3 viel besser geeignet zu sein, mit API-Änderungen umzugehen, weil es aus den Spezifikationen erzeugt wird. Wenn Sie mich fragen, ist die richtige Art der Entwicklung gegen Boto3, nicht überraschend, mit automatisierten Tests - nicht unbedingt Komponententests, sondern Integrationstests. Überprüfen Sie speziell die allgegenwärtigen Trockenlaufparameter, die AWS darstellt. – jwilner

13

Ich war mit dem gleichen Problem frustriert. Also beschloss ich, die Dokumentation von boto3 zu analysieren und Wrapper-Klassen aus der Dokumentation zu generieren. Hier ist der Link zu projizieren https://github.com/gehadshaat/pyboto3

Um es zu installieren

pip install pyboto3 

, es zu benutzen

import boto3 
s3 = boto3.client('s3') 
""" :type : pyboto3.s3 """ 
# s3. -> will give you autocomplete for s3 methods in pycharm 
+0

Danke für dieses Projekt, nur Pip installiert es jetzt und es funktioniert wie ein Charme –

+0

Was ist mit dem S3.Bucket? "" ": typ: pyboto3.s3.Bucket" "" scheint nicht zu funktionieren –

+0

@PeterKahn-Ressourcen werden nicht unterstützt. nur der Kunde für jetzt. – gehad