MacOS – Unable to upgrade to python 3.6 from python 2.7

homebrewmacospythonterminal

I'm trying to remove python 2.7 and replace it with python 3.6. The main thing I want to do is type "python" and my terminal use python 3.6, but for some reason I'm being restricted from upgrading python.

I installed python 3 with:

brew install python3

Below are the commands I'm running. Would some one please help me out?

Guys-MacBook-Pro:bin guy$ python --version
Python 2.7.10

Guys-MacBook-Pro:bin guy$ python3 --version
Python 3.6.5

Guys-MacBook-Pro:bin guy$ whereis python
/usr/bin/python

Guys-MacBook-Pro:bin guy$ whereis python3

Guys-MacBook-Pro:bin guy$ pwd
/usr/bin

Guys-MacBook-Pro:bin guy$ ls -l | grep python
-rwxr-xr-x   1 root   wheel     66880 Mar 27 23:03 python
-rwxr-xr-x   4 root   wheel       925 Oct  7  2017 python-config
lrwxr-xr-x   1 root   wheel        75 Apr  2 15:56 python2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x   1 root   wheel        82 Apr  2 15:56 python2.7-config -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
-rwxr-xr-x   1 root   wheel     66880 Mar 27 23:03 pythonw
lrwxr-xr-x   1 root   wheel        76 Apr  2 15:56 pythonw2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7

Guys-MacBook-Pro:bin guy$ ls -l /usr/local/bin|grep python
lrwxr-xr-x  1 guy  admin  43 Apr 16 15:25 easy_install-3.6 -> ../Cellar/python/3.6.5/bin/easy_install-3.6
lrwxr-xr-x  1 guy  admin  31 Apr 16 15:25 pip3 -> ../Cellar/python/3.6.5/bin/pip3
lrwxr-xr-x  1 guy  admin  33 Apr 16 15:25 pip3.6 -> ../Cellar/python/3.6.5/bin/pip3.6
lrwxr-xr-x  1 root           wheel  69 Apr 16 12:42 python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3
lrwxr-xr-x  1 root           wheel  76 Apr 16 12:42 python3-config -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3-config
lrwxr-xr-x  1 root           wheel  71 Apr 16 12:42 python3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
lrwxr-xr-x  1 root           wheel  78 Apr 16 12:42 python3.6-config -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6-config
lrwxr-xr-x  1 root           wheel  72 Apr 16 12:42 python3.6m -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m
lrwxr-xr-x  1 root           wheel  79 Apr 16 12:42 python3.6m-config -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m-config
lrwxr-xr-x  1 guy  admin  33 Apr 16 15:25 wheel3 -> ../Cellar/python/3.6.5/bin/wheel3


Guys-MacBook-Pro:bin guy$ sudo ln -s /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 python
ln: python: Operation not permitted

Guys-MacBook-Pro:bin guy$ sudo su

sh-3.2# pwd
/usr/bin

sh-3.2# ln -s /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 python
ln: python: Operation not permitted

sh-3.2# exit
exit

Guys-MacBook-Pro:bin guy$ sudo su -

Guys-MacBook-Pro:~ root# cd /usr/bin

Guys-MacBook-Pro:bin root# ln -s /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 python
ln: python: Operation not permitted

Guys-MacBook-Pro:bin root# 

Best Answer

You don't need to run brew install python3 to install Python 3.x anymore, as the formula python now defaults to Python 3.x. Simply run:

brew install python

to install Python 3.x.

Homebrew installed Python binary is still named python3, so running python will default to Apple Python which is still Python 2.x. To work around it, alias python to python3 by running:

alias python="python3"

and it should do the trick. You may wish to remove Homebrew installed python3 formula by running:

brew uninstall python3