解决 vim 报错:the imp m

发布时间:2019-10-15 09:05:02编辑:auto阅读(2999)

    问题描述

    打开 vim 之后,出现如下错误:

    Error detected while processing function youcompleteme#Enable[3]..<SNR>71_SetUpPython:
    line   42:
    /must>not&exist/foo:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

    原因:
    这是 python warning
    imppython3.4 之后 已经不再使用。
    显然,这个问题是由 ycm 这个插件加载时引起的,可以通过修改 ycm 源码解决。

    解决办法

    有以下几种:
    1.重新安装 vim,但是采用较低版本的 python
    2.修改 ycm 报错部分的代码
    具体修改如下:
    vim PLUG_PATH/YouCompleteMe/autoload/youcompleteme.vim
    修改如下:

    diff --git a/autoload/youcompleteme.vim b/autoload/youcompleteme.vim
    index 597eb020..32461fa9 100644
    --- a/autoload/youcompleteme.vim
    +++ b/autoload/youcompleteme.vim
    @@ -180,7 +180,7 @@ endfunction
    
    
     function! s:SetUpPython() abort
    -  exec s:python_until_eof
    +  silent! exec s:python_until_eof
     from __future__ import unicode_literals
     from __future__ import print_function
     from __future__ import division

    参考:Error message printed first time python3 (version 3.7.0) dynamic library is imported


    更新:这个问题出现在使用 Python 3.7 的情况,
    可以暂时在 .vimrc 中做如下配置,并等待更新 Python 3.7 来解决这个问题:

    " temporary fix
    " https://github.com/vim/vim/issues/3117
    if has('python3')
      silent! python3 1
    endif

关键字