Objective
This 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 linux commands to be executed with root privileges either directly as a root user or by use of
sudo
command - $ – requires given linux commands 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 <enter> 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 linux commands:
$ python --version Python 2.7.13 $ echo 'alias python="/usr/bin/python3.5"' >> ~/.bashrc $ . .bashrc $ python --version Python 3.5.3
{loadposition python-tutorial-toc}