Skip to content

How to change default python version on Debian 9 Stretch Linux

his article explains how to switch between Python2 and Python3 on Debian 9 Stretch Linux Operating System and Software Versions

Operating System: - Debian 9 Stretch

Requirements Privileged access to to your Debian Linux installation will be required. Difficulty EASY Conventions

# - requires given command to be executed with root privileges either directly as a root user or by use of sudo command
$ - given command to be executed as a regular non-privileged user

Instructions Debian 9 Stretch comes with two 2.7 and 3.5 python versions. If you have not installed any python package yet you can choose between both by simply installing an appropriate package:

PYTHON 2 INSTALLATION:

apt install python

PYTHON 3 INSTALLATION:

apt install python3

Check Default Python Version To check a default python version simply run python command and query its version:

$ python --version Python 2.7.13

Install Python Let's assume that no python interpreter is not yet installed on our system. Hence, we can start by installation of both python versions:

python --version

-bash: python: command not found

apt install python python3

After installation the Python version 2.7 is made default:

$ python --version Python 2.7.13

Update Python ALternatives List To perform a system-wide switch between default python versions use update-alternatives command. At first the update-alternatives command will complain that there are no python alternatives available:

update-alternatives --list python

update-alternatives: error: no alternatives for python

To install Python alternatives, first list all available options:

$ ls /usr/bin/python* /usr/bin/python /usr/bin/python2 /usr/bin/python2.7 /usr/bin/python3 /usr/bin/python3.5 /usr/bin/python3.5m /usr/bin/python3m

Next, update the Python alternatives list for each version you whish to use. In our case with stick with /usr/bin/python2.7 and /usr/bin/python3.5 versions:

update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode

update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2

update-alternatives: using /usr/bin/python3.5 to provide /usr/bin/python (python) in auto mode

Please note that the integer number at the end of each command denotes a priority. Higher number means higher priority and as such the /usr/bin/python3.5 version was set in Auto Mode to be a default if no other selection is selected. After executing both above commands your current default python version is /usr/bin/python3.5 due to its higher priority (2):

python --version

Python 3.5.3

Switch Between Python Versions Now, that we have updated list of Python alternatives to perform a switch between any python version is to run:

update-alternatives --config python

There are 2 choices for the alternative python (providing /usr/bin/python).

Selection Path Priority Status

  • 0 /usr/bin/python3.5 2 auto mode 1 /usr/bin/python2.7 1 manual mode 2 /usr/bin/python3.5 2 manual mode

Press to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in manual mode

and select an appropriate version using selction integer as shown above.

python --version

Python 2.7.13

Local User Python Version In case you need to only change a python version selectively on per user basis, you may try to edit user's .bashrc file. For example to change to python version 3.5 execute the following commands:

$ python --version Python 2.7.13 $ echo 'alias python="/usr/bin/python3.5"' >> ~/.bashrc $ . .bashrc $ python --version Python 3.5.3

https://linuxconfig.org/how-to-change-default-python-version-on-debian-9-stretch-linux