首页 > 解决方案 > deoplete/jedi 不为自动完成选择 python 虚拟环境

问题描述

我正在使用 neovim v0.3.2-953 进行带有以下插件的 python 开发。

Plug 'Shougo/deoplete.nvim',
Plug 'zchee/deoplete-jedi',
Plug 'davidhalter/jedi-vim'

自动完成不适用于我的虚拟环境中的deoplete任何库,并且仅显示安装在系统 python 中的模块的完成。

在 nvim 中,我打印了pythonnvim 正在使用的二进制文件,它确实来自我的虚拟环境。下面是我的deoplete配置设置的样子

let g:python_host_prog  = '/usr/bin/python2.7'
let g:python3_host_prog = '/usr/bin/python3'

我已经neovim为两者安装了 python 包python2python3所以当我使用系统 python 时,python 绑定工作正常,但在虚拟环境中,自动完成不起作用。

最初我认为这可能是由于neovim虚拟环境中没有安装 python 包,所以我neovim也安装了这个包,但它仍然没有工作。

以下是我经历的完整步骤

1. Created the virtual env and installed neovim python package in it (though i have separate virtual envs for neovim dedicated for python2 and python3 )
2. Activate the virtual env and launch neovim
3. Open a python file and test if the autocompletion works for modules in virtual env

如果我在这里遗漏了什么,谁能指导我

标签: vimneovimjedi

解决方案


下面是我的 deoplete 配置设置的样子:
let g:python_host_prog = '/usr/bin/python2.7'
let g:python3_host_prog ='/usr/bin/python3'

您的配置已设置为系统解释器。要使用虚拟环境,请按照我在下面提到的方式进行设置。

如果您使用的是 virtualenv,建议您专门为 Neovim 创建环境。这样,您将不需要在每个 virtualenv 中安装 neovim 包。创建它们后,将以下内容添加到 init.vim 文件中: let g:python_host_prog = '/full/path/to/neovim2/bin/python' let g:python3_host_prog = '/full/path/to/neovim3/bin/python'

Deoplete 只需要 Python 3。有关:h nvim-python-quickstart详细信息,请参阅。

还可以尝试将这些添加到您的 init.vim 以正确自动完成: let g:deoplete#enable_at_startup=1 let g:deoplete#auto_complete=1


推荐阅读