Подтвердить что ты не робот

Установите python virtualenv в vim

Я использую vim для кодирования и для кодирования питона в частности. Часто я хочу выполнить текущий буфер с помощью интерпретатора python. (например, для запуска unittests), обычно я делаю это с помощью :!python % <Enter>

Этот сценарий будет работать отлично с глобальным python, но вместо этого я хочу запустить virtualenv python. Как включить virtualenv в vim? Можно ли включить virtualenv во время выполнения?

Я использую macvim

4b9b3361

Ответ 1

Вот то, что я использую (извините, что подсветка невинна).

" Function to activate a virtualenv in the embedded interpreter for
" omnicomplete and other things like that.
function LoadVirtualEnv(path)
    let activate_this = a:path . '/bin/activate_this.py'
    if getftype(a:path) == "dir" && filereadable(activate_this)
        python << EOF
import vim
activate_this = vim.eval('l:activate_this')
execfile(activate_this, dict(__file__=activate_this))
EOF
    endif
endfunction

" Load up a 'stable' virtualenv if one exists in ~/.virtualenv
let defaultvirtualenv = $HOME . "/.virtualenvs/stable"

" Only attempt to load this virtualenv if the defaultvirtualenv
" actually exists, and we aren't running with a virtualenv active.
if has("python")
    if empty($VIRTUAL_ENV) && getftype(defaultvirtualenv) == "dir"
        call LoadVirtualEnv(defaultvirtualenv)
    endif
endif

Обратите внимание, что вам нужно, чтобы MacVim скомпилировался против Python, который вы используете для virtualenv, например. если вы загрузили Python 2.7 из Python.org, вы должны перекомпилировать MacVim с помощью --with-python-config-dir=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config в качестве аргумента для ./configure.

Надеюсь, что это поможет!

РЕДАКТИРОВАТЬ: Только одна нота атрибуции: много детективной работы, которая пришла к написанию этой маленькой мелодии, была сделана этим блоггером, и он заслуживает некоторого кредита.

Ответ 2

Активируйте свой virtualenv перед запуском vim. Вы автоматически получите соответствующий экземпляр интерпретатора.