Fermat618's Blog

Happy coding

debian 下编译安装同时支持 python2 和 python3 的 vim

Fermat618 posted @ 2012年10月22日 21:33 in 未分类 , 4278 阅读
 

Debian 下编译安装同时支持 python2 与 python3 的 vim

由于 python 相比 vim 原来的那个脚本实在是强太多,我转到用 python 来写 vim 代码了,并且是坚定的 python3.

而有两个我想用的 vim 插件却是 python2 的,自己改成 python3 版本的话工作量太大,而且升级的时候又得操 心。

以前在 Debian 下编译的 vim 无论怎么都没法做到同时支持 python2 与 python3. 最好的情况是,编译好后 同时有 +python/dyn+python3/dyn 特性,但只要执行了其中一个 python 版本的命令,另一个 python 版本的命令便无法执行。

后来发现是 Debian 自带的那个 python 的问题,具体问题我忘了。

既然系统自带的那个有问题,解决的办法就是自己安装一个没问题的 python 了。但系统的 python 不能 随便换,否则遇到的麻烦接连不断。那就编译一个 vim 专用的 python 吧,不放在 $PATH 当中,也不影响 系统原来的 python 和其它程序。

编译 vim 专用 python, 安装目录当然就放在 vim 的目录之来了。下载 python2 与 python3 的源代码,并 如此

./configure --prefix=/usr/local/share/vim/usr --enable-shared

定义 ./configure 时的选项。这样安装时就自动安装到 vim 所属的目录下面了,并且其共享库也编译好了。

然后就是编译 vim 了。经试验,改如下两个环境变量

PATH=/usr/local/share/vim/usr/bin:$PATH
LD_RUN_PATH=/usr/local/share/vim/usr/lib
export PATH LD_RUN_PATH

之后,再进行 ./configure $PATH 环境变量,决定 vim 找到的 python 的位置。而 $LD_RUN_PATH 环境变量,则是链接 vim 时所需 要的,可以让 vim 找到 python 的 so 文件的位置。有了这个之后便不再需要 $LD_LIBRARY_PATH 变量了。

./configure \
        --with-features=huge \
        --enable-python3interp \
        --enable-pythoninterp

接着 make 完成后测试 ./src/vim 不出问题的话,就可以成功了。

需要注意的是,每次成功编译后,需要执行

make clean && make distclean

否则不能编译成功。

安装好后再看两个 python 所占大小,才区区 202MB ,想一下可以不费劲地用现有的 python2 的插件了,真是很 划得来啊。

Date: 2012-10-22 21:59:33 CST

Author: fermat

Org version 7.7 with Emacs version 24

Validate XHTML 1.0

 

allenob 说:
2014年6月26日 16:25

看完有两个疑问:
文章里
1、
"编译 vim 专用 python, 安装目录当然就放在 vim 的目录之来了。下载 python2 与 python3 的源代码,并如此
./configure --prefix=/usr/local/share/vim --enable-shared"

在/usr/local/share/vim目录里,同时放两个版本的python(py2,py3)?不用区分py2和py3吗?
python的目录都是bin/ include/ lib/ share/
两个版本的python放在一个这一个目录里(/usr/local/share/vim)不会出问题吗?

2、
下面的环境变量:
PATH=/usr/local/share/vim/usr/bin:$PATH
LD_RUN_PATH=/usr/local/share/vim/usr/lib

既然python放在/usr/local/share/vim/目录下,为什么还要加/usr/lib呢,形成/usr/local/share/vim/usr/lib这样一个奇怪的路径?有什么道理吗?

Avatar_small
Fermat618 说:
2014年6月29日 18:58

@allenob: --prefix 里面少加了个 usr, 现已改正。默认的 --prefix 是 /usr/local, 对所有的程序都是这样,所以不会冲突。而 /usr/local/bin 就是 $prefix/bin, 你把 prefix 变量代进去,就看来出关系了。

none 说:
2015年12月14日 10:10

"./configure \
--with-features=huge \
--enable-python3interp \
--enable-pythoninterp
接着 make 完成后测试 ./src/vim 不出问题的话,就可以成功了。
需要注意的是,每次成功编译后,需要执行
make clean && make distclean
否则不能编译成功。"
有两个问题:1、vim ->./configure 时不需要指明vim安装路径吗?
需要指正一点是make 才是编译过程,./configure过程不是编译好不好!
2、每次configure完成后你都make clean && make distclean ,你不需要Makefile,你不需要make && sudo make install 吗?不要说你的意思是最后一次就不需要make clean && make distclean 了,按正常的编译源码包安装就好了!

TNDGE +1 Previous Pa 说:
2022年8月24日 21:24

This section contains the download links for the Tamil Nadu Plus Important Model Question Paper 2023. As you are all aware, getting the best scores on the exam depends greatly on good preparation. All students may gladly download these subject-specific TN Plus Two Important Model Question Paper 2023 to their devices and practise them as needed to finish them all in a timely manner. TNDGE +1 Previous Paper 2023 Candidates may also share these TN 11th Important Model Question Paper 2023 with their friends and neighbours in the same manner. Applicants must check the schedule without a doubt in order to be aware of all the key points for each subject.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter