Apple - How to install specific version of python on OS X
For Python in macOS, use pyenv
:
brew install pyenv
To install a specific Python version, run:
pyenv install <version>
To select a version:
pyenv local 3.5.0
Note that you must update PATH
to override the default Python version:
PATH="~/.pyenv/versions/3.5.0/bin:${PATH}"
To list available versions:
pyenv versions
See https://gist.github.com/Bouke/11261620 for more information.
$ brew install python3
is equals follow
$ brew install https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb
So. if you want to install a specific version then, you must check before install.
- Check the git history of python.rb
- Find the version you want. Now you can use
brew install
with the corresponding commit hash:- 3.4.3_2:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/bd43f59bd50bb49242259f327cb6ac7a8dd59478/Formula/python3.rb
- 3.5.2_3:
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/ec545d45d4512ace3570782283df4ecda6bb0044/Formula/python3.rb
- 3.6.5_1:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
- 3.4.3_2:
There is also: https://github.com/sashkab/homebrew-python where you can install using brew install sashkab/python/python34
and brew link python34 --force
Please note that python3.rb was renamed to python.rb at some point. Change the URL if necessary.
I have done this sort of thing in two ways - however both do not coexist with homebrew although I suspect there should be a way similar to the macports one.
General package manager
The first is using Macports as the package manager. There are separate ports for several python versions 2.x and 3.x currently 2.4, 2.5, 2.6, 2.7 and 3.1, 3.2, 3.3 3.4 and 3.5. For example to install 3.4 do sudo port install python34
There is also a python_select port that running it allows you to choose which version of python is run by /opt/bin/python. e,g, to select macports python 2.7 port select --set python python27
Each package manager needs to run as the only package manager otherwise it will be confused with unexpected different versions of libraries and executables on its paths.
From comments the similar homebrew way is given in https://stackoverflow.com/a/4158763/151019 Short answer seems to be brew switch
the equivalent to port_select
Python version managers
The other way is install direct from python.org This will install a python into /usr/local/bin I think this installs a python and python3 executable. The issue with Homebrew is that it assumes that things in /usr/local are installed by it and so brew doctor will report these python.org pythons and libraries as issues and as this question shows also the frameworks in /Library will be problematic.
EDIT 8/2018 *** I would now suggest using conda either miniconda or anaconda. This is another package manager but based and mainly meant for python, it also gives the equivalent of python's virtual environments and pyenv (as per other answer) and so each project can be in a different python and different libraries (Macports only switches python version for all projects)