今天配置了mac的vim,说到vim优化,肯定少不了大牛Valloric的YouCompleteMe插件,这个插件主要服务于vim各种语言的自动补全,速度很快很优雅,所以就必须要装啦。具体安装方法见大牛的github:
https://github.com/Valloric/YouCompleteMe.git
安装以后打开vim发现各种报错。 这是咋回事呢? 原来是这个插件和mac homebrew安装的python并不兼容,具体报错信息见:
importerror: dlopen(/usr/local/cellar/python/2.7.13/frameworks/python.framework/versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): symbol not found: __pycodecinfo_getincrementaldecoder referenced
针对这个问题,网上主流的解决方法是重装macvim和python,或者brew unlink python
但是试了一下重装并没有解决这个问题,而且也不能因为vim优化让系统python退化为mac默认的2.6吧。所以就去翻出了大牛的源码,发现这个问题主要还是和python各个版本的_io.so不一样有关系,而且很多人在装图像处理的包时也会报类似的错误。
所以就实验了一下用旧版本的io源文件替换2.7.13版本的io文件,发现问题解决!
下面放解决方法:
首先在终端里运行:
sudo find / -name _io.so
会把系统下所有名字带_io.so的文件路径都列出来,下面是我的:
/Applications/Google Drive.app/Contents/Resources/lib/python2.7/lib-dynload/_io.so
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
/Users/Nico/macports/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
然后备份2.7.13的io文件到桌面
cd Desktop
mkdir backup_python
cp /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so backup_python/2.7.13_io.so
然后用老文件替换2.7.13的文件
cp /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
然后YouCompleteMe就可以完美的工作啦!
附截图:
网友评论
最终的解决方案是换成Python 3.6的支持了,YouCompleteMe的代码里也写到Python3的话某些性能会更好。