Vim与python支持环境变量

Gui*_*eba 6 python vim autocomplete omnicomplete

如果我输入vim命令行

:python import os;print os.getenv('PYTHONPATH')
Run Code Online (Sandbox Code Playgroud)

我得到一条路径如果我关闭vim并在同一个终端上做

echo $PYTHONPATH
Run Code Online (Sandbox Code Playgroud)

我得到另一个完全不同的路径为什么这样,vim在哪里获得这条路径?这是相关的,因为自动完成无法找到模块,因此它不起作用.我知道这是因为如果我尝试再次来自vim cli

:python import django
Run Code Online (Sandbox Code Playgroud)

它失败但如果我退出vim并输入

python
>>> import django
Run Code Online (Sandbox Code Playgroud)

没有显示错误!这里发生了什么?我正在使用virtualenv并且我检查了激活源并且没有更改PYTHONPATH.我试过这个没有virtualenv,同样的问题.

更新:用于在编译之前配置Vim源的行

./configure --prefix = $ {HOME}/apps/vim73 --with-features = huge --enable-gui = gnome2 --enable-pythoninterp --enable-rubyinterp --enable-multibyte --with-python-配置-DIR =/usr/lib中/ python2.6的/配置

Pi *_*ort 4

PYTHONPATH这是一个转移注意力的事情:这不是 virtualenv 用来配置自身的东西。virtualenv 的工作原理是添加一个前缀,PATH指向备用可执行文件的位置python,从而覆盖系统python

Vim 的问题是 Python 嵌入不查看 Python 可执行文件或PATH:它查找并加载libpython库,而 virtualenv 不会虚拟化该库。这意味着 Vim 将始终初始化系统 Python,无论任何 virtualenv 如何。

然而,一切并没有丢失:Vim 在自己的 Python 初始化之后仍然可以运行 virtualenv 的初始化脚本。Jeremy Cantrell 编写了一个 Vim 插件来帮助自动化此操作,这应该可以解决您的问题: