如果我输入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
答案 0 :(得分:4)
PYTHONPATH
是一个红色的鲱鱼:这不是virtualenv用来配置自己的东西。 virtualenv的工作原理是向PATH
添加一个前缀,指向备用python
可执行文件的位置,覆盖系统python
。
Vim的问题是Python嵌入不会查看Python可执行文件或PATH
:它查找并加载libpython
库,virtualenv不会虚拟化。这意味着Vim将始终初始化系统Python,无论是否有任何虚拟现实。
然而,一切都没有丢失:Vim仍然可以在自己的Python初始化之后运行virtualenv的初始化脚本。 Jeremy Cantrell编写了一个Vim插件来帮助自动执行此操作,这可以解决您的问题: