97

I need to install python3.4 on my OS X. Tried to do it with brew install python3 and now I have python 3.5.1. But I need py3.4.

How can I install python3.4 on my Mac?

1

5 Answers 5

16

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)

3
  • 1
    It is easiy with brew stackoverflow.com/questions/3987683/…
    – Raz
    Jan 10, 2017 at 20:12
  • 2
    @Raz that is how to install one or the other not install both and chnage between them - or else I misunderstand the answer - if it is simple please give as an answer - hopefully in a simple way
    – mmmmmm
    Jan 10, 2017 at 22:16
  • 1
    @Mark I needed to run my project on the specific python version and google gives this answer. Since brew is mentioned in the question I would prefer to install additional python version than additional package manager. My comment was for googlers like me.
    – Raz
    Jan 11, 2017 at 17:39
107

For Python in macOS, use pyenv:

brew install pyenv

To install a specific Python version, run:

pyenv install <version>

To select a version for every command run with the current folder:

pyenv local 3.5.0

Note that you must update PATH in your environment to find pyenv's python3 before any other:

PATH="~/.pyenv/shims:${PATH}"

With recent version of OSX(13.X) the path is moved to /etc/paths.d/ Add a file eg: pyenvpath to /etc/paths.d/pyenvpath Add the path to that file.

To list available versions:

pyenv versions

See https://gist.github.com/Bouke/11261620 for more information.

4
  • I use this installed python 3.6.6rc1 but brew still points python3 to 3.7.0. Since I'm using Heroku and Pipfile use 3.6, I use the other answer to get 3.6.5 installed (3.6.6 isn't available in GitHub, as far as I can tell).
    – John Pang
    Jul 2, 2018 at 9:43
  • This didn't work for me for installing current beta (3.10 right now); I ended up using git clone to get the source code, switching to 3.10 branch: git checkout 3.10; and configuring and building per devguide.python.org/setup/#compile-and-build .
    – Rainy
    Sep 21, 2021 at 1:00
  • does brew install python install it for all folders on Mac os, or just the specific folder you run the command in?
    – mattsmith5
    Jun 1, 2022 at 16:50
  • pyenv doesn't work on any major version of 3.5 on Mac OS for me. Issue is the same as: github.com/pyenv/pyenv/issues/1768
    – Osama Dar
    Sep 13, 2022 at 20:41
57

$ 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

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.

10
  • As an FYI: Python 3.4.3_2 is $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/bd43f59bd50bb49242259f327cb6ac7a8dd59478/Formula/python3.rb and then python3.4 -V should work.
    – iwasrobbed
    Nov 30, 2017 at 17:04
  • @iwasrobbed it's 404: Not Found at this moment Jan 17, 2018 at 0:12
  • 7
    The file python3.rb is renamed as python.rb already. Try the other path. As FYI: Python 3.6.5_1 is $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
    – John Pang
    Jul 2, 2018 at 9:37
  • 1
    @MikeWilliamson just clone the repo and do a git log master -- Formula/python.rbto see all versions.
    – Cellcore
    Jul 20, 2020 at 0:07
  • 4
    so, its 2021...and they wont let us do this anymore Invalid usage: Installation of python from a GitHub commit URL is unsupported! brew extract python to a stable tap on GitHub instead. (UsageError)
    – ronit
    May 16, 2021 at 19:43
30
  1. Install the required version:

     % brew install [email protected]
     % brew list | grep python
     % brew ls [email protected]
     % ls -l /usr/local/Cellar/[email protected]/3.7.8_1/bin/python3.7
    
  2. Add a soft link to /usr/local/bin/:

     % ln -s /usr/local/Cellar/[email protected]/3.7.8_1/bin/python3.7 /usr/local/bin/python3.7
     % python3.7 -V
    
  3. Create a Python virtual environment:

     % python3.7 -m venv venv37
    
  4. Enter the virtual environment:

     % source venv37/bin/activate
    
  5. Exit the virtual environment:

     % deactivate
    
8

This seems like a much easier approach AND keeps away from /usr/local/bin !!

https://github.com/sashkab/homebrew-python

I haven't tested it, but it promises to be able to install any version (and multiple versions) of Python.

Including 3.6.6 which isn't available in the brew core as far as I can tell.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .