6

如果我在 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 源的行

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

4

1 回答 1

4

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

Vim 的问题在于 Python 嵌入不查看 Python 可执行文件,或者PATH:它查找并加载libpython库,而 virtualenv 没有虚拟化。这意味着 Vim 将始终初始化系统 Python,而不管任何 virtualenv。

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

于 2011-10-31T14:56:47.417 回答