【发布时间】:2011-11-21 14:21:01
【问题描述】:
如果我在 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-config-dir=/usr/lib/python2.6/config
【问题讨论】:
-
如果你在 shell 中输入
echo $PYTHONPATH会发生什么? Python 还会在sys.path中查找 PYTHONPATH 之外的模块,也就是说,您可以尝试在这两种情况下进行测试,看看是否相同 -
Vim 内部 !echo $PYTHONPATH 与 getenv 的结果相同,退出 vim 并执行 $echo $PYTHONPATH 会给出不同的路径。
-
是的,但是 vim 中的 python 主要是包含一个到 vim 的 Python 接口,例如,在 vimrc 中,这可能会在 vim
import vim中工作,但它可能会在 vim 之外失败。您是否仅对 vim 报告的PYTHONPATH中可以找到的模块进行自动补全? -
是的,仅在 Vim 看到的 PYTHONPATH 上。 Vim 忽略了运行它的终端上活动的 PYTHONPATH。我不认为我在编译 vim 时使用的配置行与它有任何关系,但我将它添加到问题中是为了更好地衡量。
标签: python vim autocomplete omnicomplete