I’m using vim with the YouCompleteMe plugin (or YCM in short) 1.In general I like to be at the edge with my development tools and my operating system for that matter and so I keep changing my configuration and keep upgrading my homebrew installation and vim plugins. That means though, that sometimes that things stop working.
So it happened that the YCM plugin failed on me and not only for my MacVim application but also for my terminal based vim. When I entered insert mode in either one of them I got this error message.
E887: Sorry, this command is disabled, the Python's site module could not be loaded.
There is a lot of discussion around dependency issues surrounding python, YCM and vim and its seems most of the time (if not all of the time) it is a configuration issue with picking up the right python version and that especially homebrew on OS X makes life harder rather than easier.
The important thing is to make sure that vim and YCM both are compiled with the same Python version (and actually same installation directory).
I wanted to start from scratch and removed my installation of vim, macvim and python and reinstalled them.
brew rm vim macvim python brew install python brew install vim --override-system-vi brew install macvim --override-system-vim sudo brew linkapps macvim
That fixed the issue, but let’s actually see why it fixed the issue. First let’s find out which python
vim is actually using.
otool -L (which vim) | grep -i python /usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0) greadlink -f /usr/local/Frameworks/Python.framework/Versions/2.7 /usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7
Obviously vim is using the Python version that was installed using homebrew. That’s good.
Looking at the installation script
install.sh of YCM, it calls in turn the installation procedure of YCM server, which
[calls python-config](https://github.com/Valloric/ycmd/blob/master/build.py#L63) to choose the correct python installation. So we have to make sure that the
python-config that is being called belongs to the same installation we used for compiling vim.
python-config --prefix /usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7
python-config is part of the same installation vim was being installed with. So it works.
Let’s quickly check if MacVim is working:
otool -L /Applications/MacVim.app/Contents/MacOS/Vim | grep -i python /usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
Yes. Everything runs smoothly now and I can enjoy my autocompletion.:w