Vim与python支持环境变量

时间:2011-09-21 03:32:42

标签: python vim autocomplete omnicomplete

如果我输入vim命令行

:python import os;print os.getenv('PYTHONPATH')

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

echo $PYTHONPATH

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

:python import django

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

python
>>> import django

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

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

  

./ configure --prefix = $ {HOME} / apps / vim73 --with-features = huge   --enable-gui = gnome2 --enable-pythoninterp --enable-rubyinterp   --enable-multibyte --with-python-config-dir = / usr / lib / python2.6 / config

1 个答案:

答案 0 :(得分:4)

PYTHONPATH是一个红色的鲱鱼:这不是virtualenv用来配置自己的东西。 virtualenv的工作原理是向PATH添加一个前缀,指向备用python可执行文件的位置,覆盖系统python

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

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