2010-10-07 146 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