与Python的特定版本编译VIM

问题描述 投票:25回答:5

我的工作谁关于Python的各种版本运行几个Python项目。我希望能设置我的VIM环境中使用ropevim,pyflakes和pylint的,但我已经遇到因使用单一的VIM(编译为Python的特定版本不匹配项目的Python版本)的一些问题。

我希望能打造VIM到每一个我的virtualenv目录,但我碰到的一个问题,我无法得到它的工作。当我尝试从源代码编译VIM,尽管我的virtualenv指定Python的config文件夹中,全系统的Python解释器总是使用。

目前,我的Python 2.6.2,并与每个版本创建了几个virtualenvs安装了Python 2.7.1。我使用Ubuntu 10.04在系统默认的Python 2.6.5是。我每次编译vim和调用:python import sys; print(sys.version)返回Python 2.6.5

configure --prefix=/virtualenv/project --enable-pythoninterp=yes --with-python-config-dir=/virtualenv/project/lib/python2.6/config

结果在的config.log如下:

...
configure:5151: checking --enable-pythoninterp argument
configure:5160: result: yes
configure:5165: checking for python
configure:5195: result: /usr/bin/python
...

它应该是/virtualenv/project/bin/python。有什么办法来指定Python解释器的vim更好地使用?

注:我可以证实,/ virtualenv中/工程/斌出现在PATH环境变量的前面。

python vim
5个回答
13
投票

我建议建立VIM对2名口译,然后用我下面提供的shell脚本,它指向一个特定的virtualenv调用它。

我可以使用下面的命令(2.7下的$ HOME /根装)进行建设的Python 2.7 VIM:

% LD_LIBRARY_PATH=$HOME/root/lib PATH=$HOME/root/bin:$PATH \
    ./configure --enable-pythoninterp \ 
    --with-python-config-dir=$HOME/root/lib/python2.7/config \
    --prefix=$HOME/vim27
% make install
% $HOME/bin/vim27

:python import sys; print sys.path[:2]
['/home/pat/root/lib/python27.zip', '/home/pat/root/lib/python2.7']

你的virtualenv实际上是围绕它创建时使用Python解释器的一个瘦包装 - $HOME/foobar/lib/python2.6/config/usr/lib/python2.6/config一个符号链接。

所以,如果你用系统解释创建它,VIM将探测这个最终对现实的解释链接,使用系统默认sys.path,即使配置将显示的virtualenv的路径:

% PATH=$HOME/foobar/bin:$PATH ./configure --enable-pythoninterp \
    --with-python-config-dir=$HOME/foobar/lib/python2.6/config \
    --prefix=$HOME/foobar
..
checking for python... /home/pat/foobar/bin/python
checking Python's configuration directory... (cached) /home/pat/foobar/lib/python2.6/config
..

% make install
% $HOME/foobar/bin/vim
:python import sys; print sys.path[:1]
['/usr/lib/python2.6']

解决方法:如果您的系统Vim是对你的系统蟒蛇最有可能的编译,你并不需要重建VIM每个的virtualenv:你能把你的virtualenv的bin目录中名为vim一个shell脚本,调用系统之前扩展PYTHONPATH VIM:

~/HOME/foobar/bin/vim的内容:

#!/bin/sh
ROOT=`cd \`dirname $0\`; cd ..; pwd`
PYTHONPATH=$ROOT/lib/python2.6/site-packages /usr/bin/vim $*

当被调用时,virtualenv中的sys.path中插入:

% $HOME/foobar/bin/vim
:python import sys; print sys.path[:2]
['/home/pat/foobar/lib/python2.6/site-packages', '/usr/lib/python2.6']

11
投票

对于它的价值,并且似乎没有人在这里回答这个问题,我不得不使用如下命令行一些运气:

vi_cv_path_python=/usr/bin/python26 ./configure --includedir=/usr/include/python2.6/  --prefix=/home/bcrowder/local --with-features=huge --enable-rubyinterp --enable-pythoninterp --disable-selinux --with-python-config-dir=/usr/lib64/python2.6/config

5
投票

我想给类似的解决方案,以克劳德的作品非常适合我的。

假设你有Python的安装/opt/Python-2.7.5和该文件夹的结构

$ tree -d -L 1 /opt/Python-2.7.5/
/opt/Python-2.7.5/
├── bin
├── include
├── lib
└── share

你想建立VIM与Python版本。所有你需要做的是

$ vi_cv_path_python=/opt/Python-2.7.5/bin/python ./configure  --enable-pythoninterp --prefix=/SOME/FOLDER

因此,仅仅通过明确赋予vi_cv_path_python变量configure脚本将演绎出它自己的(即使是配置-DIR)的一切。

这是在VIM 7.4+和最近与vim-7-4-324测试多次。


1
投票

我跟我的系统在3个不同版本的Python的同样的问题。

对我来说,最简单的事情是改变我$PATH环境变量,使得有蟒蛇,我想是(在我的情况/usr/local/bin)的版本的文件夹之前被发现的另一个。


0
投票

在我的编译vim80,系统蟒蛇是2.6,我有另一个Python 2.7在〜/ local / bin中,我发现,使编制工作:

  1. 更新$ PATH提前把我的Python路径
  2. 添加一个软链接,LN -s蟒蛇python2(该配置文件会尝试通过探测python2找到蟒蛇配置)
  3. make distclean命令重新运行的./configure之前,确保没有错误的缓存值回升。
© www.soinside.com 2019 - 2024. All rights reserved.