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

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

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

Я использую macvim

4 ответов


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

" 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.

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

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


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


существует также плагин vim на github:

https://github.com/jmcantrell/vim-virtualenv

Я не пробовал, но, похоже, это также решает вопрос.


эта проблема действительно беспокоила меня в течение длительного времени, пока я не использую плагин vim-conda. Просто добавьте плагин 'cjrh /vim-conda' в свой~/.vimrc и он будет работать. Вы также можете увидеть подробную инструкцию https://github.com/cjrh/vim-conda.