PyCharm intellisense для boto3

возникают проблемы с просмотром опций full intellisense (завершения кода) в PyCharm. работая с python 3.4 в Windows. предложения частично работают:

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 

в то время как я могу работать с документацией в одиночку, intellisense - это просто такая приятная функция!

У меня были проблемы с аналогичными проблемами, чтобы получить полный синтаксис lxml, но я подумал, что это связано с тем, что мне нужно было установить lxml напрямую в виде двоичного файла (слишком много обручей, чтобы перепрыгнуть через окна, чтобы установить его через pip)

Кто-нибудь еще сталкивается с подобными проблемами?

Пока мы здесь, Я вижу много разных библиотек вокруг использования awscli с python: boto, boto3, troposphere и т.д. Какие преимущества имеют использование одного над другим. Amazon заявляет, что boto3 является предпочтительным методом над boto, но для моего использования запуска/остановки экземпляров ec2 можно было бы легко сделать со старым boto.

Ответ 1

Это происходит потому, что все методы на клиентах boto3 и объектах ресурсов генерируются во время выполнения на основе файла JSON, который описывает, какие операции поддерживает служба. Pycharm должен будет иметь конкретные знания об этом процессе, чтобы автоматически заполнить имена методов.

Для вашего второго вопроса boto3 является официальным AWS SDK для Python. Одним из основных преимуществ boto3 является то, что из-за этого процесса, управляемого JSON, который описывает API AWS, большинству новых функций обслуживания требуется простое обновление модели. Это означает, что обновления API выполняются быстрым, последовательным и надежным способом.

Но если вы используете boto в существующем коде, и он работает для вас, не стесняйтесь продолжать использовать его. Вы всегда можете установить boto3 вдоль бота, если вам нужно использовать новые функции.

Ответ 2

Я был разочарован тем же вопросом. Поэтому я решил разобрать документацию 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

Убедитесь, что вы сначала:

  1. Установите pyboto3 → pip install pyboto3 | pip3.x установить pyboto3
  2. Проверьте настройки вашего переводчика и убедитесь, что вы видите pyboto3 в списке
  3. Сделать файл → Недействительные кэши/перезапустить

После перезапуска Pycharm вы увидите, что intellisense работает в вашу пользу, и все доступные методы для сервиса (в случае выше s3), которые вы пытаетесь использовать, доступны вам!

Ответ 3

Комната становится немного тесноватой, но я также создал boto3 типирования boto3 (ссылка на GitHub), boto3_type_annotations. Я pyboto3 подход pyboto3 и проанализировал строки документации сервисных объектов, а затем программно написал для них определения классов, аннотировал аргументы и возвращаемые типы с помощью модуля typing. В отличие от pyboto3 я создал все, включая сервисные ресурсы, пагинаторы и официанты. Также есть опция, где я оставил строки документации, так что быстрая документация PyCharm будет работать. Но честное предупреждение, этот пакет действительно большой.

# Without docs
pip install boto3_type_annotations

# Or with docs

pip install boto3_type_annotations_with_docs

enter image description here

Ответ 4

Вероятно, не официальный метод, но я нашел то, что работает. В PyCharm откройте консоль python (инструменты/консоль python). Консоль также будет иметь список переменных на правой стороне. Если вы инициализируете объект ресурса в консоли, его дочерние объекты будут перечислены в дереве переменных объектов. Некоторая ограниченная интеллигенция также.

То, как я начал это делать, - это писать код прямо в интерпретатор, используя переменное окно наблюдения в качестве шпаргалки. Как только код написан, я копирую/вставляю его в реальный файл скрипта. Неуклюжий...

Ответ 5

Я люблю boto3, но я также был разочарован тем, что каждый раз, когда я хочу сделать простой специальный запрос, мне приходится открывать документацию по boto3. Итак, я написал автобото:

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

Это не просто автозаполнение. Он также возвращает классы данных, что означает, что вам не нужно искать имена атрибутов возвращаемых объектов. PyCharm скажет вам, что доступно.

На данный момент, это также, вероятно, очень медленно из-за всей общей сериализации и десериализации.

Ответ 6

Убедитесь, что вы:

  1. Установите pyboto3 → pip install pyboto3 | pip3.x установить pyboto3
  2. Проверьте настройки вашего переводчика и убедитесь, что вы видите pyboto3 в списке
  3. Сделать файл → Недействительные кэши/перезапустить

После перезапуска Pycharm вы увидите, что intellisense работает в вашу пользу, и все доступные методы для службы, которую вы пытаетесь использовать, доступны для вас!