vim python3 jedi配置,vim编译jedi-vim或是YouCompleteMe完成python3的自动提示

有时候会在Ipython下写一些测试的demo,有的时候写好的就直接save到了.py文件,这时候想修改这些py文件的时候,就要用到vim,可是vim不会自动提示关键字和一些包里的方法。 没事 就试着编译了一下,须要说明的时候,一开始选型的是jedi-vim,也编译成功了。后来又试着编译了YouCompleteMe,仍是比较费事的,踩了一些坑,百度的文章千篇一概,关键的问题,没有说明如何解决。python

写此文,记录一下,供参考。linux

升级vim到vim8.x版本

vim --version | grep pythongit

#tips: vim不能同时支持python2和python3,若是要同时支持,须要以动态载入的方式来执行,这里只支持python3github

一、下载

二、编译:

vim 8.0,出错,_posixsubprocess.cpython-36m-x86_64-linux-gnu.so undefined symbol PyExc_OSErrorvim

缘由:编译后,vim 须要用到:/usr/local/python3.6.8/lib/python3.6/lib-dynload/*.so动态库,缓存

而这些动态库须要python主库的一些symbol,在vim里找不到。ruby

最终解决(仍是须要google):编辑器

export LDFLAGS="-rdynamic",这个问题困扰了我快3天时间,百度出来的网页编译vim后,都有undefined symbol错误,实际上是没有找到根本缘由。

export LDFLAGS="-rdynamic",将主库里symbol导出至动态库/usr/local/python3.6.8/lib/python3.6/lib-dynload/*.so的符号表里。

rm -fr /usr/local/vim8

mkdir -p /usr/local/vim8

cd vim/src

./configure --with-features=huge

--enable-cscope

--enable-python3interp

--with-python3-config-dir=/usr/local/python3.6.8/lib/python3.6/config-3.6m-x86_64-linux-gnu

--enable-multibyte

--enable-fontset

--prefix=/usr/local/vim8'

其中:/usr/local/python3.6.8是python3的安装路径(python3要以--enable-shared参数安装,若是是python3.6.5以上,还须要指定:--with-openssl参数,下面会有缘由说明)

----暂时不须要的config参数 --enable-rubyinterp

--enable-luainterp

--enable-perlinterp

--with-python3-config-dir=/opt2/python-3.6.5/lib/python3.6/config-3.6m-x86_64-linux-gnu

--with-python3-config-dir=/usr/local/python3.7.2/lib/python3.7/config-3.7m-x86_64-linux-gnu \

make && make install

tips:(若是make的时候出错,执行make distclean)

make distclean

三、建立软链接

mv /usr/bin/vim /usr/bin/vim_bak

ln -sf /usr/local/vim8/bin/vim /usr/bin/vim

四、查看当前vim版本是否支持python3

vim --verison | grep python3

五、测试:

python3 import subprocess;print(subprocess)

安装jedi,jedi-vim和YouCompleteMe 都依赖这个模块来完成自动提示 pip install jedi

-------vim 的 插件管理器 Vundle ---------

配置.vimrc文件,下载vundle插件,配置参数,开始DIY本身的编辑器

cd ~ touch .vimrc vi .vimrc

set nocompatible " be iMproved, required set backspace=indent,eol,start

filetype off " required

" set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin()

" let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim'

Plugin 'Valloric/YouCompleteMe'

" Plugin 'davidhalter/jedi-vim' " Plugin 'ervandew/supertab'

" All of your Plugins must be added before the following line call vundle#end() " required

set number set background=dark set tabstop=4 set autoindent set softtabstop=4 syntax on

filetype plugin indent on " required

打开vim 执行安装 :PluginInstall

cd /root/.vim/bundle/YouCompleteMe

python3 install.py

Tips: YouCompleteMe 编译出错 编译前准备工做: 一、升级gcc到 (GCC) 4.9.2,默认GCC 4.4.7不支持x11 二、YouCompleteMe,须要python3,以动态链接库的方式去编译,即python3在编译的时候须要加上:--enable-shared,同时在python3.6.5以后在使用pip的时候,须要ssl, 因此也须要指定:--with-openssl=/usr/local/ssl,/usr/local/ssl是openssl的安装路径,同时python3,须要openssl的版本在1.0.2或是1.1.1之上,因此有可能须要升级系统的 openssl版本。(具体方法查看相关的网页) 三、编译好python3以后,须要把python3的动态库加载到系统缓存(这里假设/usr/local/python3.6.8/是python3的安装路径) 修改配置:echo "/usr/local/python3.6.8/lib" >> /etc/ld.so.conf 加载:ldconfig -v 查看:ldd /usr/local/python3.6.8/bin/python3

具体步骤: 一、升级gcc到 (GCC) 4.9.2,默认GCC 4.4.7不支持x11。 #一、编译gcc(这个须要的时间比较长,具体参看文章) #二、后续工做 例如安装在:/usr/local/gcc/ touch /etc/profile.d/gcc.sh echo "export PATH=/usr/local/gcc/bin:$PATH" >> /etc/profile.d/gcc.sh . /etc/profile.d/gcc.sh

查看系统里的gcc和cc编译器,which gcc,which cc,发现并无cc编译器,指定cc编译器。

ln -sf /usr/local/gcc/bin/gcc /usr/local/gcc/bin/cc

这里要注意,平时执行ln以后就会马上生效,这里执行生成cc以后,which cc已经生效,可能去编译YouCompleteMe的时候发现使用的c 编译器仍是老的GCC 4.4.7

解决办法:退出当前shell,再次进入系统进行YouCompleteMe的编译工做。

完成效果:

3667130406caa3ddc64b5689e77b6036.png

若有问题,请在下方留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值