neovim因为virtualenv或conda找不到python?

7 投票
2 回答
6092 浏览
提问于 2025-05-10 23:25

我在我的 neovim 中安装了 YouCompleteMeUltiSnips 插件。通常情况下,一切都很正常。

但是我在进行 Python 开发时使用的是 MiniCondaMiniConda 有点像 virtualenv,我有一个叫 parser 的虚拟 Python 环境。当我通过 source activate parser 来激活这个虚拟环境时,就出现了一些问题:

YouCompleteMe unavailable: requires Vim compiled with Python 2.x support
UltiSnips requires py >= 2.7 or py3
Press ENTER or type command to continue

所以问题是 neovim 找不到正确的 Python,我很困惑为什么 virtualenv 会影响 neovim

相关文章:

  • 暂无相关问题
暂无标签

2 个回答

1

如果 Neovim 在你的 $PATH 中找到了 python,它会默认认为这是 Python 2(同样,python3 会被当作 Python 3)。如果你在一个已经激活的 Conda 环境中启动 Neovim,而这个环境使用的是 Python 3,那么就会出现问题,因为这个 Conda 环境里有一个叫做 python 的程序,但实际上它是 Python 3,而不是 Python 2。因此,你需要在 Neovim 中设置一个选项 g:python_host_prog,让它指向一个有效的 Python 2,并且你还需要在这个 Python 2 中安装好所需的 neovim 客户端。

可能的解决办法(我自己用 Anaconda 测试过):

# neovim init.vim file cmd
# runs python3 for neovim from a specific env
# should resolve the need for neovim in each new python env when using nvim
# add the following to your init.vim file
let g:python3_host_prog = '/path/to/anaconda3/bin/python'

把这个添加到你的 .vimrcginit.vim 文件中(这是 Neovim 的图形界面配置文件)。

4

正如@Alex在评论中提到的,使用 pip install neovim 这个命令可以解决这个问题。

撰写回答