Jedi-vim omni завершение с нестандартной библиотекой

132
18

Я прочитал README из jedi-vim.
https://github.com/davidhalter/jedi


Есть скриншоты omni, дополняющие нестандартную библиотеку (Django).


Я установил django by pip и попробовал один и тот же код для тестирования полного завершения Django, но он не работает.


Omni completion (^O^N^P) Pattern not found.

Стандартное завершение работы библиотеки отлично работает.


Я обычно использую нестандартную библиотеку, поэтому я хочу использовать omni-дополнение с этими библиотеками.


Должен ли я выполнить некоторую конфигурацию для использования omni-завершения с нестандартными библиотеками?

спросил(а) 2013-03-03T22:39:00+04:00 8 лет, 2 месяца назад
1
Решение
76

Большинство сторонних библиотек должны работать из коробки, Django не так хорош с автозаполнением, вам нужно, чтобы в вашей среде была установлена ​​переменная DJANGO_SETTINGS, в противном случае большинство импорта будут создавать неправильно настроенное исключение, а автозаполнение не будет работа.


Вы можете установить эту переменную в virtualenv или с псевдонимом в своей оболочке или использовать что-то вроде этого в .vimrc:


function FindDjangoSettings()
if strlen($VIRTUAL_ENV) && has('python')
let output = system("find $VIRTUAL_ENV \\( -wholename '*/lib/*' -or -wholename '*/install/' \\) -or \\( -name 'settings.py' -print0 \\) | tr '\n' ' '")
let outarray= split(output, '[\/]\+')
let module = outarray[-2] . '.' . 'settings'
let syspath = system("python -c 'import sys; print sys.path' | tr '\n' ' ' ")
" let curpath = '/' . join(outarray[:-2], '/')

execute 'python import sys, os'
" execute 'python sys.path.append("' . curpath . '")'
" execute 'python sys.path.append("' . syspath . '")'
execute 'python sys.path = ' . syspath
execute 'python os.environ.setdefault("DJANGO_SETTINGS_MODULE", "' . module . '")'
endif
endfunction
autocmd FileType python call FindDjangoSettings()

Предполагается, что вы используете virtualenv для своих проектов и можете беспокоить вас, если вы используете virtualenv для чего-то, что не является django.


Я также рекомендую вам взглянуть на вы заполните мне плагин, его потрясающий полный плагин, это не замена для джедая, на самом деле, он имеет jedi как зависимость для завершения python.

ответил(а) 2013-11-11T04:27:00+04:00 7 лет, 5 месяцев назад
44

Вы можете попробовать это: sys.path.append(/path/to/lib)

Я использую SUMO/TraCI как нестандартную библиотеку.


В коде Python я добавил sys.path.append("/path/to/SUMO/tools/") перед использованием методов traci, а затем завершение в Vim работает отлично.

ответил(а) 2018-12-17T22:02:00+03:00 2 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема