2015-07-24 5 views
1

Я пытаюсь заставить джедай работать правильно с библиотекой boto3 для веб-служб Amazon (https://github.com/boto/boto3).Jedi не работает с библиотекой boto3

Это, наверное, проще всего объяснить на примере:

$ python 
Python 3.4.3 (default, Jul 16 2015, 13:03:44) 
[GCC 5.1.1 20150618 (Red Hat 5.1.1-4)] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import boto3 
>>> sqs = boto3.resource("sqs", region_name="us-west-2") 
>>> sqs.<TAB><TAB> 
sqs.Message(   sqs.__dict__   sqs.__format__(
sqs.__hash__   sqs.__module__   sqs.__reduce_ex__(
sqs.__str__(   sqs.get_queue_by_name(
... 
>>> type(sqs) 
<class 'boto3.resources.factory.sqs'> 
>>> 

На интерактивном переводчике, я получаю надлежащее завершение для данного класса. Введите jedi:

>>> import jedi 
>>> jedi.__version__ 
'0.9.0' 
>>> jedi.Script('import boto3; sqs = boto3.resou').completions() 
[<Completion: resource>, <Completion: resources>] 
>>> 

Все еще работает здесь! Но тогда ...

>>> code = 'import boto3; sqs = boto3.resource("sqs", region_name="us-west-2"); sqs.' 
>>> jedi.Script(code).completions() 
[] 
>>> 

Я не уверен, что это моя вина, библиотека или джедая.

EDIT: Кажется, что PyCharm имеет ту же проблему: PyCharm intellisense for boto3

ответ

1

Предоставлено jamesls (от PyCharm вопроса https://stackoverflow.com/a/31681988/3236648):

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

 Смежные вопросы

  • Нет связанных вопросов^_^