大多数第三个库应该开箱即用,Django 对自动完成不太好,您需要在您的环境中DJANGO_SETTINGS
设置变量,否则大多数导入将引发配置不正确的异常并且自动完成将不起作用。
你可以在你的 virtualenv 中设置这个变量,或者在你的 shell 中使用别名,或者在你的.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 的替代品,事实上,它有 jedi 作为 python 完成的依赖项。