Managing Python Versions on Ubuntu

Managing Python Versions on Ubuntu

Ubuntu systems often come with both Python 2 and Python 3 installed. While Python 2 is now deprecated, it can sometimes interfere with Python 3 projects. This tutorial explains how to manage Python versions on Ubuntu and set Python 3 as the default interpreter.

Understanding the Situation

On many Ubuntu systems, the python command defaults to Python 2. This can lead to compatibility issues when working on projects that require Python 3. The goal is to configure your system so that running python executes Python 3.

Methods for Setting the Default Python Version

Several methods can achieve this. We’ll cover the most robust and recommended approaches, along with their pros and cons.

1. Using update-alternatives (Recommended)

The update-alternatives tool is designed for managing default commands, including Python interpreters. This method is preferred because it correctly integrates with the system’s package management and doesn’t rely on modifying your shell configuration.

  • Step 1: Check existing alternatives:
    First, see what Python versions are currently registered with update-alternatives. Run:

    sudo update-alternatives --config python
    

    This will list the available Python interpreters and prompt you to select a default. If Python 3 isn’t listed, proceed to step 2.

  • Step 2: Add Python 3 to update-alternatives:

    If Python 3 is not listed, register it with update-alternatives. The command structure is:

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 <priority>
    

    Replace <priority> with an integer value. Higher numbers indicate higher priority. A value of 1 is reasonable. For example:

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
    

    If you have multiple Python 3 versions installed (e.g., 3.6, 3.7, 3.8), you can add each one with a different priority. For instance:

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1
    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2
    

    This assigns a higher priority to Python 3.7, making it the default.

  • Step 3: Select the default Python version:

    Run the configuration command again:

    sudo update-alternatives --config python
    

    Select the number corresponding to your desired Python 3 version from the list.

  • Step 4: Verify the change:

    Open a new terminal and run:

    python --version
    

    The output should now display the version of Python 3 you selected.

2. Using python-is-python3 Package (Ubuntu 20.04 and later)

Ubuntu 20.04 LTS (Focal Fossa) and later versions offer a convenient package for setting Python 3 as the default.

  • Installation:

    sudo apt install python-is-python3
    

    This package creates a symbolic link in /usr/bin/python that points to /usr/bin/python3.

  • Verification:

    Open a new terminal and run:

    python --version
    

    The output should display the Python 3 version.

3. Alias in Shell Configuration (Less Recommended)

While simpler, this method is not the most robust because it only affects the current user’s shell and may not work with sudo.

  • Edit .bashrc:

    Open your .bashrc file in a text editor:

    nano ~/.bashrc
    
  • Add Alias:

    Add the following line to the beginning of the file:

    alias python=python3
    
  • Source .bashrc:

    Apply the changes by sourcing the file:

    source ~/.bashrc
    
  • Verification:

    Open a new terminal and run:

    python --version
    

    The output should display the Python 3 version. Be aware that commands executed with sudo will not be affected by this alias.

Choosing the Right Method

  • For most users, the update-alternatives method is the most reliable and recommended approach. It correctly integrates with the system’s package management and doesn’t rely on modifying shell configuration files.
  • If you are using Ubuntu 20.04 LTS or later, the python-is-python3 package provides the simplest solution.
  • The alias method is quick for personal use but less robust and may not work with sudo.

Leave a Reply

Your email address will not be published. Required fields are marked *