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给出如下方案:
- Add/install YouCompleteMe using Vundle (by adding
Plugin ‘Valloric/YouCompleteMe‘
to your~/.vimrc
) - Restart vim and run
:PluginInstall
, wait for it to complete (takes a while). When it finishes, close vim. - Go to
~/.vim/bundle/YouCompleteMe/
- 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. - For me the paths were:
-DPYTHON_LIBRARY=/home/fredrikb/anaconda3/lib/libpython3.5m.so
and-DPYTHON_INCLUDE_DIR=/home/fredrikb/anaconda3/include/
- Go to
~/.vim/bundle/YouCompleteMe/third_party/ycm/cpp/
. If there is aCMakeCache.txt
, delete it. - 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 runmake
. - 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安装及配置