gpt4 book ai didi

python - 使用特定版本的 Python 编译 vim

转载 作者:IT老高 更新时间:2023-10-28 22:22:20 24 4
gpt4 key购买 nike

我正在处理多个 Python 项目,这些项目在不同版本的 Python 上运行。我希望将我的 vim 环境设置为使用ropevim、pyflakes 和 pylint,但我遇到了一些由使用单个 vim 引起的问题(为与项目的 Python 版本不匹配的特定 Python 版本编译) .

我希望将 vim 构建到我的每个 virtualenv 目录中,但我遇到了一个问题,我无法让它工作。当我尝试从源代码构建 vim 时,尽管在我的 virtualenv 中指定了 Python 配置文件夹,但始终使用系统范围的 Python 解释器。

目前,我安装了 Python 2.6.2 和 Python 2.7.1,并从每个版本创建了几个 virtualenvs。我正在使用 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。有没有办法指定 vim 使用的 Python 解释器?

注意:我可以确认/virtualenv/project/bin 出现在 PATH 环境变量的前面。

最佳答案

我建议针对 2 个解释器构建 vim,然后使用我在下面提供的 shell 脚本调用它,将其指向特定的 virtualenv。

我能够使用以下命令(2.7 安装在 $HOME/root 下)针对 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 的符号链接(symbolic link)/python2.6/config.

因此,如果您使用系统解释器创建它,VIM 将对此进行探测并最终链接到真正的解释器,默认使用系统 sys.path,即使 configure 会显示 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 很可能是针对您的系统 python 编译的,因此您不需要为每个 virtualenv 重新构建 vim:您只需删除一个名为 vim 的 shell 脚本 在你的 virtualenv 的 bin 目录中,它在调用系统 vim 之前扩展了 PYTHONPATH:

~/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']

关于python - 使用特定版本的 Python 编译 vim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com