Set python virtualenv dans vim
-
28-09-2019 - |
Question
J'utilise vim pour le codage et le codage python en particulier. Souvent, je veux exécuter le tampon en cours avec l'interpréteur python. (Par exemple unittests d'exécution), d'habitude je le fais avec :!python % <Enter>
Cette scenatio travaillera fonctionne très bien avec python global, mais je veux courir virtualenv python à la place. Comment puis-je activer virtualenv au sein vim? Est-il possible de changer virtualenv sur le moteur d'exécution?
J'utilise MacVim
La solution
Voici ce que j'utilise (désolé la mise en évidence est timbré).
" 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
Notez que vous devez avoir MacVim compilé le Python que vous utilisez pour la virtualenv, par exemple si vous avez téléchargé Python 2.7 de Python.org vous devez recompiler MacVim en utilisant --with-python-config-dir=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
comme argument pour ./configure
.
L'espoir qui aide!
EDIT: Juste une note d'attribution: Une grande partie du travail de détective qui est entré en écrivant cette petite chansonnette a été fait par ce blogueur , et il mérite une partie du crédit.
Autres conseils
Activer votre virtualenv avant de commencer vim. Vous obtiendrez automatiquement l'instance de l'interpréteur correspondant.
Il y a aussi un plugin vim sur github:
https://github.com/jmcantrell/vim-virtualenv
Je n'ai pas essayé, mais il semble résoudre la question ainsi.
cette question me fait préoccupe depuis longtemps jusqu'à ce que j'utilise le plug-in de vim-Conda. Il suffit d'ajouter Plugin 'cjrh / vim-Conda' dans votre ~ / .vimrc et cela fonctionnera. Vous pouvez également consulter les instructions détaillées https://github.com/cjrh/vim-conda .