Make python3 as my default python on Mac

PythonPython 3.xMacosTerminalHomebrew

Python Problem Overview


What I'm trying to do here is to make python3 as my default python. Except the python 2.7 which automatically installed on mac, I installed python3 with homebrew. This is the website that I'm following. http://docs.python-guide.org/en/latest/starting/install3/osx/#install3-osx

I guess I followed every instruction well, got xcode freshly installed, Command line tools, and homebrew. But here's my little confusion occurs.

> The script will explain what changes it will make and prompt you before the installation begins. Once you’ve installed Homebrew, insert the Homebrew directory at the top of your PATH environment variable. You can do this by adding the following line at the bottom of your ~/.profile file > > export PATH=/usr/local/bin:/usr/local/sbin:$PATH

I was really confused what this was, but I concluded that I should just add this following line at the bottom of /.profile file. So I opened the **/.profile** file by open .profile in the terminal, and added following line at the bottom. And now it looks like this.

export PATH=/usr/local/bin:/usr/local/sbin:$PATH
# Setting PATH for Python 3.6
# The original version is saved in .profile.pysave
export PATH=/usr/local/bin:/usr/local/sbin:$PATH

And then I did brew install python, and was hoping to see python3 when I do python --version. But it just shows me python 2.7.10. I want my default python to be python3 not 2.7

And I found a little clue from the website.

> Do I have a Python 3 installed?

$ python --version
Python 3.6.4

> If you still see 2.7 ensure in PATH /usr/local/bin/ takes pecedence over /usr/bin/

Maybe it has to do something with PATH? Could someone explain in simple English what PATH exactly is and how I could make my default python to be python3 when I run python --version in the terminal?

Python Solutions


Solution 1 - Python

Probably the safest and easy way is to use brew and then just modify your PATH:

First update brew:

brew update

Next install python:

brew install python

That will install and symlink python3 to python, for more details do:

brew info python

Look for the Caveats:

==> Caveats
Python has been installed as
  /usr/local/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
  /usr/local/opt/python/libexec/bin

Then add to your path /usr/local/opt/python/libexec/bin:

export PATH=/usr/local/opt/python/libexec/bin:$PATH

The order of the PATH is important, by putting first the /usr/local/opt/python/libexec/bin will help to give preference to the brew install (python3) than the one is in your system located in /usr/bin/python

Solution 2 - Python

Before we make the changes, the default version of python in my system was python 2.7.17.

> python --version > > Python 2.7.17

To make python3 as default python by replacing python2 in Ubuntu.

  1. Open Terminal
  2. cd
  3. nano ~/.bashrc
  4. alias python=python3 (Add this line on top of .bashrc file)
  5. Press ctr+o (To save the file)
  6. Press Enter
  7. Press ctr+x (To exit the file)
  8. source ~/.bashrc OR . ~/.bashrc (To refresh the bashrc file)

>python --version > > Python 3.7.5

Solution 3 - Python

Changing the default python version system wide can break some applications that depend on python2. The alternative solution would be to create an alias.

If you are using zsh (the default on Mac OS) run the following from terminal:

echo 'alias python="python3"' >> ~/.zshrc

Solution 4 - Python

According to this S.O. post, changing the default Python interpreter could possibly break some applications that depend on Python 2.

The post also refers to using aliasing as a solution, and this link might also be a good reference on how to do that.

Personally, I just type "Python3" before I run scripts or go into a shell environment instead of "python".

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSambo KimView Question on Stackoverflow
Solution 1 - PythonnbariView Answer on Stackoverflow
Solution 2 - PythonKrunal RajkotiyaView Answer on Stackoverflow
Solution 3 - PythonLord ElrondView Answer on Stackoverflow
Solution 4 - PythonJonathanView Answer on Stackoverflow