python - Vim with python 支持环境变量

标签 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 源代码的行

./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/

相关文章:

javascript - React Material UI 从自动完成中打开模式失去焦点

c++ - 无法解析基于模板的标识符 "get".Netbeans 8.1

vb.net - 跨 session 维护自动完成/建议列表的最佳方法

python - 获取一列的值,其中一列为最大值,另一列为最小值

vim - 如何在Vim中同时编辑多个位置

python - Django 中的 OneToOne、ManyToMany 和 ForeignKey 字段有什么区别?

vim - vim中如何才能正常显示中文?

vim - 如何对所有打开的缓冲区进行替换?

python - 使用matplotlib.pyplot制作一维波动方程的动画

python - 插入多对多记录时出现sqlalchemy UnmappedColumnError