2015-07-22 20 views
10

ma problemy z wyświetleniem pełnej opcji intellisense (zakończenia kodu) w PyCharm. praca z pythonem 3.4 w systemie Windows. sugeruje częściowo działa:PyCharm intellisense dla 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 

natomiast mogę odpracować dokumentację sam intellisense jest właśnie taka miła cecha mieć!

ive miał podobne problemy z jej pełną składnię lxml ale myślałem, że to dlatego, że musiałem zainstalować lxml bezpośrednio jako binarna (zbyt wiele obręcze, aby przeskoczyć na okna, aby go zainstalować poprzez PIP)

Ktoś jeszcze spotkać podobne problemy?

Podczas naszej wizyty Widzę wiele różnych bibliotek związanych z używaniem awscli z pythonem: boto, boto3, troposfera itp. Jakie są zalety korzystania z jednego na drugim. Amazon twierdzi, że boto3 jest preferowaną metodą w stosunku do boto, ale dla mojego użycia uruchamiania/zatrzymywania instancji ec2 można łatwo zrobić za pomocą starszych boto.

+0

Czy próbowałeś aktualizowania pycharm? 4.5.3 jest na zewnątrz. –

+0

Używam 4.5.2. Nie sądzę, żeby to miało duże znaczenie, ale spróbuję. –

+0

nie pomogło fyi. –

Odpowiedz

4

Dzieje się tak, ponieważ wszystkie metody na klientach boto3 i obiektach zasobów są generowane w czasie wykonywania na podstawie pliku JSON opisującego operacje obsługiwane przez tę usługę. Pycharm musiałby posiadać szczegółową wiedzę na temat tego procesu, aby automatycznie uzupełniać nazwy metod.

Na twoje drugie pytanie, boto3 to oficjalny pakiet SDK dla systemu Python dla AWS. Jedną z głównych zalet boto3 jest to, że z powodu tego procesu opartego na modelu JSON, który opisuje interfejsy API AWS, większość nowych funkcji usługowych wymaga jedynie prostej aktualizacji modelu. Oznacza to, że aktualizacje API odbywają się w szybki, spójny i niezawodny sposób.

Ale jeśli używasz boto w istniejącym kodzie i działa on dla Ciebie, możesz go nadal używać. Zawsze możesz zainstalować boto3 po stronie boto, jeśli chcesz pobrać nową funkcjonalność.

+2

Dzięki za odpowiedź! Jaki jest więc właściwy sposób rozwoju za pomocą boto3? polegając na dokumentacji i kodowaniu? Wydaje się nieco głupio pracować z tak dużymi fragmentami funkcjonalności, których nie można zwalidować za pomocą jakiegokolwiek walidatora pythonów. Innym problemem, który widzę tutaj, jest to, że jeśli API dla usługi Amazon ulegnie zmianie, może to potencjalnie przerwać skrypty boto3. Wątpię, aby tak się stało, ale jego wadą jest brak samodzielnej biblioteki. Czy istnieje sposób na "prekompilację" tych modeli? –

+0

Bardzo chciałbym poznać tę odpowiedź. – Pretzel

+0

Wygląda na to, że jeśli interfejs API AWS ulegnie zmianie, jest to problem dla każdego pakietu SDK, a nie tylko Boto3, i nie można go rozwiązać, udostępniając bazowy kod do analizy statycznej. Rzeczywiście, Boto3 wydaje się znacznie lepiej dopasować do zmian API, ponieważ jest generowany ze specyfikacji. Jeśli pytasz mnie, prawidłowy sposób rozwijania przeciwko boto3 jest, co nie jest zaskakujące, automatycznym testowaniem - niekoniecznie testowanie jednostkowe, ale testowanie integracyjne. W szczególności sprawdź wszechobecne parametry pracy w trybie suchym, które eksponuje AWS. – jwilner

13

Byłem sfrustrowany tym samym problemem. Postanowiłem więc przetworzyć dokumentację boto3 i wygenerować klasy opakowania z dokumentacji. Oto link do projektu https://github.com/gehadshaat/pyboto3

Aby go zainstalować

pip install pyboto3 

Aby go użyć

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

Dzięki za ten projekt, po prostu zainstaluj go teraz i działa jak urok. –

+0

A co z s3.Bucket? "" ": type: pyboto3.s3.Bucket" "" wydaje się nie działać –

+0

@PeterKahn zasoby nie są obsługiwane. tylko klient na teraz. – gehad