2010-10-07 132 views
12

我使用vim進行編碼,特別是用於python編碼。通常我想用python解釋器執行當前的緩衝區。 (例如運行unittests),通常我這樣做:!python % <Enter>在vim中設置python virtualenv

這scenatio將工作正常與全球python,但我想運行virtualenv python代替。如何在vim中啓用virtualenv?是否有可能在運行時切換virtualenv?

我使用的是macvim

回答

15

以下是我使用的(對不起突出顯示是扭曲的)。

" 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.org下載了Python 2.7,則應使用--with-python-config-dir=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config作爲./configure的參數重新編譯MacVim。

希望有幫助!

編輯:只是一個音符歸屬:很多是走進了寫這個小玩意是由this blogger做偵探工作的,他值得一些信貸。

+0

哇,很酷,這是什麼我在尋找,非常感謝!我不知道virtualenv創建這個activate_this.py – 2010-10-25 19:27:54

+0

嗨dwf,你能看看我的問題在這裏看看爲什麼我的輸出是奇怪的? http://stackoverflow.com/questions/17288843/macvim-uses-wrong-python-virtualenv – Lionel 2013-06-25 03:49:30

5

在啓動vim之前激活您的virtualenv。您將自動獲得相應的解釋器實例。

+0

我使用的是MacVim,我從Dock開始它,所以它不是一個很好的選擇......據我所知,激活virtualenv完全是關於修改PATH,PYTHONHOME和PYTHONPATH環境變量,也許一些其他也一樣。我不介意將virtualenv的'script'移植到vim,我只是想知道是否有現有的解決方案。 – 2010-10-07 12:35:42

+0

我發現這是行不通的,如果virtualenv python是與vim編譯的版本不同的版本(例如2 vs 3) – hwjp 2016-06-21 13:51:48

+0

對不起,對我不適用OSX + MacVim – cmcginty 2017-05-10 05:53:10

2

還有在GitHub Vim的插件:

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

我還沒有嘗試過,但似乎解決問題爲好。

+2

我試過這個,但它似乎不適用於Mac OSX 10.8(山獅) - 一些其他潛在的問題也許存在 – Lionel 2013-06-25 02:53:59

+0

我有問題讓它與MacVim一起工作。 – Chris 2014-10-29 20:13:57

+1

@Chris:這很可能是因爲[此問題](http://stackoverflow.com/questions/9853584/how-to-use-correct-ruby-in-vim-how-to-modify-path-in -vim/12146694#12146694)。 – Nolsto 2015-03-06 04:09:31

0

這個問題實際上困擾了我很長一段時間,直到我使用vim-conda的插件。只需在〜/ .vimrc中添加插件'cjrh/vim-conda'即可。您還可以查看詳細說明https://github.com/cjrh/vim-conda