在vim中设置python虚拟环境

20 投票
6 回答
26065 浏览
提问于 2025-04-16 05:08

我用vim来写代码,特别是写Python代码。经常我想用Python解释器来执行当前的代码文件(比如运行单元测试),通常我会用 :!python % <Enter> 这个命令来做到。

这个方法在全局的Python环境下运行得很好,但我想用虚拟环境中的Python来执行。请问我该怎么在vim中启用虚拟环境呢?在运行时可以切换到虚拟环境吗?

我使用的是macvim。

6 个回答

3

在GitHub上还有一个vim的插件:

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

我没有试过这个插件,但看起来它也能解决这个问题。

22

在启动vim之前,先激活你的虚拟环境。这样你就会自动获得对应的解释器实例。

20

这是我使用的内容(抱歉高亮显示有点问题)。

" 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版本相匹配。例如,如果你是从Python.org下载的Python 2.7,那么在重新编译MacVim时,你需要加上这个参数:--with-python-config-dir=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config,在运行./configure的时候使用。

希望这对你有帮助!

补充说明:我想提一下,写这段内容时,很多调查工作是由这位博主完成的,他应该得到一些功劳。

撰写回答