This is cobbled together and extended from https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim
Neovim requires a package to be installed for Python plugins to work.  You
really should read :h nvim-python to supplement the info on this page.
# Make sure you export the correct environment for youcompleteme:
export PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs4 --enable-framework"
pyenv install 2.7.11
pyenv install 3.4.4
pyenv virtualenv 2.7.11 neovim2
pyenv virtualenv 3.4.4 neovim3
pyenv activate neovim2
pip install neovim
pyenv which python  # Note the path
pyenv activate neovim3
pip install neovim
pyenv which python  # Note the path
# The following is optional, and the neovim3 env is still active
# This allows flake8 to be available to linter plugins regardless
# of what env is currently active.  Repeat this pattern for other
# packages that provide cli programs that are used in Neovim.
pip install flake8
ln -s `pyenv which flake8` ~/bin/flake8  # Assumes that $HOME/bin is in $PATHNow that you've noted the interpreter paths, add the following to your
init.vim file:
let g:python_host_prog = '/full/path/to/neovim2/bin/python'
let g:python3_host_prog = '/full/path/to/neovim3/bin/python'Now make sure you rebuild YouCompleteMe as documented here.
- Ensure you have the prerequisites installed.
- Installing pyenv with homebrew is unreliable. Use pyenv-installer instead.
- There is a final step that's printed to the terminal after installing pyenvand it's important!
- To confirm you have pyenvcorrectly installed, runwhich pyenv. It should print a shell function, not a file path.
- Run pyenv doctorto avoid surprises.
- pyenv globalcan be thought of as altering the- $PATHto include the specified versions'- bindirectory. This only works while- pyenvis active.
- pyenv shellis the same as above, but for the current session.
- pyenv localis the same as above, but it writes a- .python-versionfile in the current directory. It allows the specified versions to be automatically set when you enter the directory, and unset when you leave it. Very convenient for projects.
- You will want to add .python-versionto your global.gitignorefile.
- pyenv shell --unsetwill reset the session's Python versions.
- pyenv activate venvnamediffers from- pyenv shell venvnamein that only one- $VIRTUAL_ENVcan be active at a time.
- pyenv deactivatedeactivates the virtual environment.
- pyenv versionslists the versions you have installed.- systemis a special case pointing to Python versions that were originally found in- $PATH. Virtual environment names are listed as versions.
Unless you know what you're doing, the system installed Python interpreters
should remain pristine and only contain packages that were installed via the
OS's package manager (read: not pip).  sudo in front of pip install
should make you cringe any time it's recommended.
Some distros use separate locations for system packages and user packages, but
the potential to mess things up is increased when you use sudo.  On distros
that don't make a distinction between system and user packages, it's possible
to upgrade system packages with sudo pip install -U.  Or the reverse could
happen and you'll downgrade packages installed with pip.  There is also the
issue of non-Python system packages that may require the specific versions of
Python packages that were built for the distro.  The point is, you will have
two package managers competing to decide what's new or old.
A very common example of what can go wrong: sudo pip install --upgrade pip.
It is a problem many Python developers encounter.  This problem
occurs more than it should and renders all Python programs installed in the
system bin directories to be broken.
If you can't honestly say that you know how Python packages are laid out or what your system's Python dependencies are, and enjoy having a stable, error-free Python installation, leave the system Python installations alone.