未捕获异常:[vim-hug-neovim-rpc] 需要 `:pythonx import [pynvim|neovim]` 命令之一才能工作 Deoplete Vim

Hig*_*gig 6 vim

我在 Linux 上使用常规 vim(不是 neovim)。我正在尝试使用 Deoplete 进行自动完成。我知道存储库的标题.nvim在最后说,但不知怎的,自动更正仍然有效。但即使它有效,每当我启动 vim 时,我都会收到此错误:

[vim-hug-neovim-rpc] Vim(pythonx):Traceback (most recent call last):
Error detected while processing function deoplete#enable[9]..deoplete#initialize[1]..deoplete#init#_initialize[10]..<SNR>68_init_internal_variables[28]..neovim_rpc#serveraddr:
line   18:
E605: Exception not caught: [vim-hug-neovim-rpc] requires one of `:pythonx import [pynvim|neovim]` command to work
Run Code Online (Sandbox Code Playgroud)

我不知道为什么要这样做,因为自动完成功能很好,但它有点烦人,我想摆脱它。我能做些什么?

小智 12

这个解决方案对我有用,但我目前使用的是 macOS。我分享是因为背后的想法应该是相同的,也许可以帮助其他用户。

基本上,我所做的就是通过 de VIM 中的以下命令确定我的 VIM 使用的是哪个 Python 版本:

:pythonx import sys; print(sys.path)
Run Code Online (Sandbox Code Playgroud)

就我而言,我得到了这个:

['/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/usr/local/o
pt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages', '_vi
m_path_']
Run Code Online (Sandbox Code Playgroud)

所以我必须pynvim使用Python 3.9安装,问题就解决了。

同样,在我使用 macOS 的场景中,步骤是:

brew link --overwrite python@3.9 --force
pip3 install pynvim
Run Code Online (Sandbox Code Playgroud)

参考:

https://github.com/roxma/vim-hug-neovim-rpc/issues/47#issuecomment-630323947 https://github.com/roxma/vim-hug-neovim-rpc/issues/47#issuecomment-622954462


Ege*_*gel 7

我也遇到过类似的问题,但是是在 macOS 上。唯一的例外是,我使用了许多不同版本的 python,并且我更喜欢使用来自brew包管理器的python而不是pyenv来自brew包管理器的python)

重要提示:这种方法的主要缺点是,作为 vim 用户(已vim通过 PM 安装brew),每次更新brew 软件包并且 vim 维护者更新 python 的依赖版本时,您将被迫重复此操作。好消息是,这种情况并不经常发生。

  1. 飞行前检查

    $ which python
    /Users/myusername/.pyenv/shims/python
    
    $ python --version
    Python 3.9.7. 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 打开 Vim 并检查编辑器使用的是哪个版本的 Python

    :pythonx import sys; print(sys.path)
    
    Run Code Online (Sandbox Code Playgroud)

    您应该得到类似于以下结果的结果:

    $ which python
    /Users/myusername/.pyenv/shims/python
    
    $ python --version
    Python 3.9.7. 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 进入brew的vim安装程序使用的python版本的目录,并通过其pip3可执行文件安装缺少的包

    :pythonx import sys; print(sys.path)
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新打开 vim 并享受没有错误的情况