簡體   English   中英

在vim中設置python virtualenv

[英]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。 您將自動獲得相應的解釋器實例。

github上還有一個vim插件:

https://github.com/jmcantrell/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM