博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
anaconda+youcompleteme
阅读量:4326 次
发布时间:2019-06-06

本文共 2824 字,大约阅读时间需要 9 分钟。

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

最近python写得比较多,使用vim+youcompleteme总觉得补全好差,任何第三方库都搞不定,想不通这玩意怎么和我另一台电脑里的功能差距有点大?我的archlinux+python+vim+ycm不是好好的吗?

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

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

解决方案:

1. 安装基本工具:

sudo apt install cmake build-essential python-dev python3-dev

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

Plugin 'Valloric/YouCompleteMe'

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

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

3. 根据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.

        我总结一下,到目录~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp下,里面有个CMakeLists.txt文件,运行下面的命令:

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。根据,anaconda自带的gcc版本有点土,需要更新,使用下面命令即可:

conda install libgcc

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

 


 

Update

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

这一步需要根据具体的python版本选择头文件目录,比如python版本是3.6,头文件目录应该为python3.6m,python版本见cmake那行的python动态库版本。

 

另外,直接这样安装会导致对于Go文件无法使用YcmCompleter GoToDefinition,提示ValueError: No semantic completer exists for filetypes: ['go']。对此,我的解决办法是重新clone,运行install.py版本(记得附带--go-completer),之后再有选择的执行本文前面说的步骤。

转载于:https://www.cnblogs.com/algorithmchangeworld/p/7393156.html

你可能感兴趣的文章
Mac OS 快捷键
查看>>
java 下载文件
查看>>
The King’s Problem 强连通
查看>>
Lambda 表达式
查看>>
Ural1297 最长回文子串(后缀数组+RMQ)
查看>>
十九、CSS如何引入字体
查看>>
DS博客作业07--查找
查看>>
c# Invalidate() Update() Refresh()的区别
查看>>
work of 1/5/2016
查看>>
自己做了个微信小程序
查看>>
CMD获取当前目录的绝对路径
查看>>
HTML5新规范和CSS3新特性
查看>>
使用php后台给自己做一个页面路由,配合ajax实现局部刷新。
查看>>
类与对象(二)
查看>>
NSString 的常用方法
查看>>
mysql的engine不同,导致事物回滚失败的问题
查看>>
JAVAWeb使用POI做导出Excel
查看>>
今天解决了首页无头像被显示的问题
查看>>
charts 画折线图
查看>>
[py]__name__ 属于哪个文件
查看>>