Homebrew Vim – Python Support Depends on Python 3.7.0

homebrewpythonvi

I have to use Python 3.6.5 because of a library I use that keeps showing bugs on 3.7.0 (TensorFlow).

I installed Python 3.6.5 using Homebrew as follows:

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

If I install vim using Homebrew:

brew install vim --with-python

it updates Python to 3.7.0. So I end up having a working vim but broken TensorFlow code. What I did was switching back to 3.6.5 after installing vim:

brew switch python 3.6.5_1

And I ended up having a working TensorFlow code but a broken vim:

dyld: Library not loaded: /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/Python
  Referenced from: /usr/local/bin/vim
  Reason: image not found
[1]    83442 abort      vim

Best Answer

To solve this with homebrew, you can temporarily backdate homebrew-core and set the HOMEBREW_NO_AUTO_UPDATE variable to hold it in place:

cd `brew --repo homebrew/core`
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python
brew install vim --with-python

I don't recommend permanently backdating homebrew-core, as you will miss out on security patches, but it is useful for testing purposes.

A more robust approach, would be to use pyenv as suggested in the comment by @Dustin Wheeler. You can also extract old versions of homebrew formulae into your own tap (tap_owner/tap_name) using the brew extract command:

brew extract python tap_owner/tap_name --version=3.6.5