[英]Set python virtualenv in vim
我使用 vim 進行編碼,尤其是 Python 編碼。 我經常想用 python 解釋器執行當前緩沖區。 (例如運行單元測試),通常我用:!python % <Enter>
這個場景適用於全局 python,但我想運行 virtualenv python。 如何在 vim 中啟用 virtualenv? 是否可以在運行時切換 virtualenv?
我正在使用 macvim
這是我使用的(對不起,突出顯示是亂七八糟的)。
" 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
請注意,您需要針對用於 virtualenv 的 Python 編譯 MacVim,例如,如果您從 Python.org 下載了 Python 2.7,您應該使用--with-python-config-dir=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
重新編譯 MacVim --with-python-config-dir=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
作為./configure
的參數。
希望有幫助!
編輯:只是一個說明:寫這篇小曲的很多偵探工作都是由這位博主完成的,他應該得到一些榮譽。
在啟動 vim 之前激活您的 virtualenv。 您將自動獲得相應的解釋器實例。
這個問題實際上困擾了我很長時間,直到我使用 vim-conda 的插件。 只需在您的 ~/.vimrc 中添加插件 'cjrh/vim-conda' 就可以了。 您還可以查看詳細說明https://github.com/cjrh/vim-conda 。
如果由於某種原因,你不希望運行vim
一個python虛擬環境中,然后代替采購venv/bin/activate
,您可以:
PYTHONPATH="$(source venv/bin/activate; python3 -c "import sys; print(':'.join(sys.path))"; deactivate)" vim
這也是虛擬環境的來源,但它使其與運行vim
的環境有些分離。
您可以創建一個帶有 vim 別名的函數,以自動加載/卸載 virtualenv(如果它存在於您啟動它的位置)。
在這個例子中,它檢查.venv/bin/activate
的 virtualenv。
vimVenAutoload() {
if [ -e .venv/bin/activate ]; then
. .venv/bin/activate;
vim $*;
deactivate;
else
vim $*;
fi;
}
alias vim="vimVenAutoload"
您可以將其添加到您的.bashrc
或.bash_profile
。
小警告:如果一個 virtualenv 已經加載,它將被新的覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.