anaconda+youcompleteme

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了anaconda+youcompleteme相关的知识,希望对你有一定的参考价值。

简单记录一下混合使用anaconda和youcompleteme的经历

最近python写得比较多,使用vim+youcompleteme总觉得补全好差,任何第三方库都搞不定,想不通这玩意这么菜还怎么用?之前我的archlinux+普通python+vim+ycm不是好好的吗?

之前忙,没时间管这事,即使补全差点,加上ipython凑合也还能用。

今晚有些受不了,于是就思考了一番,还试了试jedi-vim,结果不合意,弃。仔细思考后发现不是ycm菜,是我蠢。ycm默认解释器路径是系统自带的python,找寻的库默认也是找系统的。而我平时使用默认的python是anaconda的,库也是安装在anaconda下,难怪检索不到。

解决方案:

1. 将vimrc中的下面语句注释

Plugin ‘Valloric/YouCompleteMe‘

  打开一个vim窗口,执行:BundleClean删了ycm。

       再取消注释前面的那句,执行:BundleInstall重新安装。

2. 根据https://github.com/Valloric/YouCompleteMe/issues/1241,作者本人表示无可奈何,有个好心人boulund给出如下方案:

  1. Add/install YouCompleteMe using Vundle (by adding Plugin ‘Valloric/YouCompleteMe‘ to your ~/.vimrc)
  2. Restart vim and run :PluginInstall, wait for it to complete (takes a while). When it finishes, close vim.
  3. Go to ~/.vim/bundle/YouCompleteMe/
  4. Run install.py from inside the YouCompleteMe directory; it will fail. Remember the Python library and include paths, these paths are required in the next step.
  5. For me the paths were:
  6. -DPYTHON_LIBRARY=/home/fredrikb/anaconda3/lib/libpython3.5m.so and
  7. -DPYTHON_INCLUDE_DIR=/home/fredrikb/anaconda3/include/
  8. Go to ~/.vim/bundle/YouCompleteMe/third_party/ycm/cpp/. If there is a CMakeCache.txt, delete it.
  9. Run: cmake -G "Unix Makefiles" -DPYTHON_LIBRARY=/home/fredrikb/anaconda3/lib/libpython3.5m.so -DPYTHON_INCLUDE_DIR=/home/fredrikb/anaconda3/include/ -DUSE_PYTHON2=OFF, then run make.
  10. Start vim on a *.py file to verify that YouCompleteMe now works.

        我总结一下,运行下面的命令:

cmake -G "Unix Makefiles" -DPYTHON_LIBRARY=$you_home_dir/anaconda3/lib/libpython3.6m.so -DPYTHON_INCLUDE_DIR=$your_home_dir/anaconda3/include -DUSE_PYTHON2=OFF 

将上面的$you_home_dir改为家目录即可。另外,为了确保正确,最好查看动态库是否真是libpython3.6m.so。如果需要C/C++补全,请自行下载llvm+clang(链接),解压,结束后该目录下应该有lib,bin等目录,在上面语句加入参数:

-DPATH_TO_LLVM_ROOT=$your_llvm_dir

然后运行如下命令即可:

cmake --build . --target ycm_core 

注意,运行完你正常情况下是会失败的。大概进行到百分之十几的时候,因为需要python-dev。你可能会很奇怪这玩意不是通过包管理器安装了吗?问题在于,你用的头文件是anaconda的,引用不到你系统的头文件。(个人猜测)

根据google结果(结果),运行下面命令即可。注意,这些操作都必须在一个终端下完成,否则后果自负。另外,检查自己的python头文件具体在哪。

export CPLUS_INCLUDE_PATH=/usr/include/python3.5m

可能还需要运行

make clean

然后重新执行:

cmake --build . --target ycm_core 

即可。不出意外,你不会碰到错误。不过你试着补全,发现一点效果都没有,查看/tmp目录下的错误日志,发现错误大致是`GLIBCXX_3.4.20‘ not found。根据http://blog.csdn.net/u010987458/article/details/71702938,anaconda自带的gcc版本有点土,需要更新,使用下面命令即可:

conda install libgcc

不出意外,这时ycm能正常工作,而且效果很好。

以上是关于anaconda+youcompleteme的主要内容,如果未能解决你的问题,请参考以下文章

Windows 10环境安装VIM代码补全插件YouCompleteMe

VIM 代码自动补全, YouCompleteMe安装及配置

Ubuntu16.04下配置YouCompleteMe

[原创] [YCM] YouCompleteMe安装完全指南

Fedora 27安装vim插件YouCompleteMe

Fedora 29安装vim插件YouCompleteMe