Интеллект PyCharm для boto3

возникают проблемы с просмотром опций 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.


person Alex C    schedule 22.07.2015    source источник
comment
Вы пытались обновить свой PyCharm? 4.5.3 вышла.   -  person Red Shift    schedule 22.07.2015
comment
Я использую 4.5.2. Не думал, что это так важно, но я попробую.   -  person Alex C    schedule 22.07.2015


Ответы (8)


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

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

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

person jamesls    schedule 28.07.2015
comment
Спасибо за ответ! Так как же правильно развиваться с boto3? полагаясь на документацию и кодирование оттуда? Кажется немного глупым работать с такими большими кусками функциональности, которые не могут быть проверены никаким валидатором Python. Еще одна проблема, которую я здесь вижу, заключается в том, что если изменится API для службы Amazon, это может привести к поломке скриптов boto3. Я сомневаюсь, что это произойдет, но недостатком является отсутствие отдельной библиотеки. Есть ли способ предварительно скомпилировать эти модели? - person Alex C; 29.07.2015
comment
Я бы тоже хотел узнать этот ответ. - person Pretzel; 06.11.2015
comment
Мне кажется, что если API AWS изменится, это проблема для любого SDK, а не только для Boto3, и она не решается наличием базового кода, доступного для статического анализа. Действительно, Boto3 гораздо лучше подходит для работы с изменениями API, потому что он создается на основе спецификаций. Если вы спросите меня, правильный способ разработки против boto3, что неудивительно, — это автоматизированное тестирование — не обязательно модульное тестирование, а интеграционное тестирование. В частности, ознакомьтесь с вездесущими параметрами пробного запуска, которые предоставляет AWS. - person jwilner; 14.02.2016
comment
Есть ли способ предварительно скомпилировать эти модели? (Я никогда не считал точечное завершение какой-либо формой теста, поэтому для меня тестирование не имеет отношения к этому вопросу) - person nik.shornikov; 16.04.2018
comment
это действительно заноза в заднице, но мы должны с этим жить, мы не можем использовать intellisense boto3, как Visual Studio делает с awssdk. как бы я хотел, чтобы мой босс хотел приложение aspnet, облегчающее жизнь - person Jeff; 30.11.2018

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

person gehad    schedule 29.07.2016
comment
Спасибо за этот проект, только что установил его прямо сейчас, и он работает как шарм - person Patrick Laxton; 02.02.2017
comment
Что насчет s3.Bucket? :type : pyboto3.s3.Bucket не работает - person Peter Kahn; 28.04.2017
comment
Ресурсы @PeterKahn не поддерживаются. пока единственный клиент. - person gehad; 29.04.2017
comment
Спасибо. Что-то лучше, чем ничего. - person Peter Kahn; 29.04.2017
comment
не работает с моей стороны, используя сообщество pycharm 2018.3 - person Jeff; 30.11.2018
comment
Похоже, это работает только для некоторых предметов. Я могу заставить его работать для S3 2018.3, но не для, например, sagemaker. - person Jack; 04.02.2019
comment
pyboto3 поддерживает только Python 2.7. - person avalanchy; 19.03.2021

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

# Without docs
pip install boto3_type_annotations

# Or with docs

pip install boto3_type_annotations_with_docs

введите здесь описание изображения

person Allie Fitter    schedule 14.11.2018

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

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

person arthur    schedule 25.05.2018

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

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

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

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

person jbasko    schedule 09.09.2018

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

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

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

person lowlow20    schedule 15.06.2019

Пока обсуждаются решения автозаполнения для boto3, я удивлен, что никто еще не упомянул botostub. Работает в любой среде IDE и автоматически обновляется.

person szmktk    schedule 31.10.2019

boto3-stubs

Типовые аннотации для boto3 1.16.62, совместимые с VSCode, PyCharm, Emacs, Sublime Text, mypy, pyright и другими инструментами.

person Siva    schedule 29.01.2021