如果我在 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
最佳答案
PYTHONPATH
是一条红色鲱鱼:这不是 virtualenv 用来配置自身的。 virtualenv 通过向 PATH
添加前缀来工作,该前缀指向备用 python
可执行文件的位置,覆盖系统 python
。
Vim 的问题是 Python 嵌入不查看 Python 可执行文件或 PATH
:它查找并加载 libpython
库,virtualenv 不虚拟化它.这意味着 Vim 将始终初始化系统 Python,而不管任何 virtualenv。
然而,一切并没有丢失:Vim 仍然可以在自己的 Python 初始化之后运行 virtualenv 的初始化脚本。 Jeremy Cantrell 编写了一个 Vim 插件来帮助自动执行此操作,这应该可以解决您的问题:
关于python - Vim with python 支持环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7494285/