49

My Mac came with Python 2.7 installed by default, but I'd like to use Python 3.6.1 instead.

How can I change the Python version used in Terminal (on Mac OS)?

Please explain clearly and offer no third party version manager suggestions.

heapoverflow
  • 922
  • 3
  • 8
  • 15
  • 1
    Can you just `alias`, `python` to point to `python3`, simplest of the tricks – Inian Apr 11 '17 at 19:12
  • Just type `python` and hit Tab. You'll be shown the names of the executables whose name starts with `python`. There you'll find some referring to Python 3.6.1. Memorize the name of the executable you need and use it as the interpreter by typing it instead of merely `python`. – ForceBru Apr 11 '17 at 19:16
  • @ForceBru This is not necessarily true. I have a venv created by Visual Studio and it is not listed. – GettingItDone Feb 23 '22 at 14:13

12 Answers12

62

The simplest way would be to add an alias to python3 to always point to the native python installed. Add this line to the .bash_profile file in your $HOME directory at the last,

alias python="python3"

Doing so makes the changes to be reflected on every interactive shell opened.

Inian
  • 80,270
  • 14
  • 142
  • 161
  • Good suggestion. I think I will do this. Hypothetically, what if I have multiple versions of Python 3.x installed, then which version would the command 'Python3' use? – heapoverflow Apr 11 '17 at 19:19
  • 1
    @heapoverflow: may be look up `virtualenv` is you haven't done it already. – Inian Apr 11 '17 at 19:37
  • alias python="python3" is not working on MacOS Monterey 12.3.1, alias python=python3 is working – vivekraj Apr 07 '22 at 17:48
  • @vivekraj You are wrong, removing the quotes has no impact whatsoever as to how aliases are expanded in shell – Inian Apr 07 '22 at 17:50
  • how do i undo this? i had python 3.9 and python3 3.10, now python --version returns "zsh: command not found: python" – Raksha Feb 09 '23 at 04:38
20

As Inian suggested, you should alias python to point to python 3. It is very easy to do, and very easy to switchback, personally i have an alias setup for p2=python2 and p3=python3 as well to save on keystrokes. Read here for more information: How do I create a Bash alias?

Here is an example of doing so for python:

alias python=python3

Like so:

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3

See here for the original: https://askubuntu.com/questions/320996/how-to-make-python-program-command-execute-python-3

Community
  • 1
  • 1
axwr
  • 2,118
  • 1
  • 16
  • 29
  • This is assuming you already have python3 installed of course. if not a quick google search will help you to do so. – axwr Apr 11 '17 at 19:18
  • how do i undo this? i had python 3.9 and python3 3.10, now python --version returns "zsh: command not found: python" – Raksha Feb 09 '23 at 04:38
13

You can just specify the python version when running a program:

for python 2:

python filename.py

for python 3:

python3 filename.py
Ajax1234
  • 69,937
  • 8
  • 61
  • 102
12

pyenv is a 3rd party version manager which is super commonly used (18k stars, 1.6k forks) and exactly what I looked for when I came to this question.

Install pyenv.

Usage

$ pyenv install --list
Available versions:
  2.1.3
  [...]
  3.8.1
  3.9-dev
  activepython-2.7.14
  activepython-3.5.4
  activepython-3.6.0
  anaconda-1.4.0
  [... a lot more; including anaconda, miniconda, activepython, ironpython, pypy, stackless, ....]

$ pyenv install 3.8.1
Downloading Python-3.8.1.tar.xz...
-> https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz
Installing Python-3.8.1...
Installed Python-3.8.1 to /home/moose/.pyenv/versions/3.8.1

$ pyenv versions
* system (set by /home/moose/.pyenv/version)
  2.7.16
  3.5.7
  3.6.9
  3.7.4
  3.8-dev

$ python --version
Python 2.7.17
$ pip --version
pip 19.3.1 from /home/moose/.local/lib/python3.6/site-packages/pip (python 3.6)

$ mkdir pyenv-experiment && echo "3.8.1" > "pyenv-experiment/.python-version"
$ cd pyenv-experiment

$ python --version
Python 3.8.1
$ pip --version
pip 19.2.3 from /home/moose/.pyenv/versions/3.8.1/lib/python3.8/site-packages/pip (python 3.8)
Martin Thoma
  • 124,992
  • 159
  • 614
  • 958
7

You can open and use zsh terminal on Mac OS.

Edit file /Users/{your_username}/.zshrc using nano or vim.

Add new alias for python 3

alias python="python3"

Save and check your python version using this following command.

python --version

Look at the result:

enter image description here

  • 1
    This should be the accepted answer, all of the above are no longer useful as they are outdated with the coming of zsh as default shell. – Adam Owczarczyk Jan 18 '22 at 10:57
4

If you have python various versions of python installed,you can launch any of them using pythonx.x.x where x.x.x represents your versions.

Fadil Olamyy Wahab
  • 626
  • 2
  • 6
  • 15
1

I have followed the below steps on a MacBook.

  1. Open the terminal.
  2. Type nano ~/.bash_profile and enter. (Or vim instead of nano if you use vim.)
  3. Now add the line alias python=python3
  4. Press CTRL + x then y to save it. (Or just save it on vim since you can't exit vim.)
  5. It will prompt for the file name, simply hit enter.
  6. Now check the python version by using the command: python --version
  7. If you see 2.0.0+, it worked!
Ravi
  • 13
  • 7
1

Adding to Inian's answer (Accepted one),

  • To check python 3 version
python3 -V
  • To switch to new version of python which is already installed (eg. 3.7 to 3.9)
alias python="python3.9"
  • To install new version of python, you can use homebrew on MAC

  • Once homebrew is installed, you can install new python version with homebrew

brew install python@3.9

and then switch to this new version using

alias python="python3.9"
  • Check python version to confirm the change

  • To check all the installed versions of python

brew list | grep python
Sandeep Amarnath
  • 5,463
  • 3
  • 33
  • 43
0

Here is a nice and simple way to do it (but on CENTOS), without braking the operating system.

yum install scl-utils

next

yum install centos-release-scl-rh

And lastly you install the version that you want, lets say python3.5

yum install rh-python35

And lastly:

scl enable rh-python35 bash

Since MAC-OS is a unix operating system, the way to do it it should be quite similar.

Skeptic
  • 1,254
  • 14
  • 18
0

I am a beginner in python and was looking for the same and in the terminal, I just typed python3 and it came up with the newest version. I am thinking that if one wants to go to a different version they can just type that in? Could be wrong but this is what shows up when I typed python3.

% python3
Python 3.9.2 (v3.9.2:1a79785e3e, Feb 19 2021, 09:06:10) 
[Clang 6.0 (clang-600.0.57)] on darwin

Before when I just typed python. This is the message I would get.

% python2.7
WARNING: Python 2.7 is not recommended. 
This version is included in macOS for compatibility with legacy software. 
Future versions of macOS will not include Python 2.7. 
Instead, it is recommended that you transition to using 'python3' from within Terminal.
Python 2.7.16 (default, Jun  5 2020, 22:59:21) 
[GCC 4.2.1 Compatible Apple LLVM 11.0.3 (clang-1103.0.29.20) (-macos10.15-objc- on darwin
Type "help", "copyright", "credits" or "license" for more information.
Valentin Vignal
  • 6,151
  • 2
  • 33
  • 73
0

In order to easily manage the different python versions. Please use below link to see how to use the versions effectively and without any environment variables. https://youtu.be/jTN4MHNhJZs

0

ON WINDOWS HOWEVER...

sometimes you could just rename the file to "python3" in a python 3 enviroment the program itself will still work but some ides will break for obvious reasons... so my answer works on windows but it makes ides that dont have support for enviroments break

why am i the only windows user to mention this