How to Install Python 3.11 on Ubuntu 22.04 or 20.04

Python 3.11 is one of the latest major releases of the widely-used open-source programming language, Python. It introduces various new features, enhancements, and bug fixes compared to its predecessor, Python 3.10. Python is renowned for its ease of use, clarity, and adaptability, rendering it a favored option for different domains, including web development, scientific computation, data analysis, and artificial intelligence.

Here are some of the key changes and improvements that come with Python 3.11:

  • Structural Pattern Matching: A new syntax for matching and deconstructing complex data structures, including dictionaries, sets, and user-defined objects.
  • Parenthesized Context Managers: A new syntax for using context managers in a more concise and readable way.
  • Improved error messages are now more informative and user-friendly, making debugging and troubleshooting code easier.
  • Runtime Audit Hooks: New API that allows developers to register hooks to monitor and modify the runtime behavior of Python programs.
  • Additional Standard Library Modules: Python 3.11 includes several new standard library modules, including zoneinfo, which provides better support for time zones, and HTTP core, a high-level HTTP client library.

The features mentioned above and improvements of Python 3.11 are only a subset of the total enhancements. Python’s latest releases usually include minor bug fixes and performance enhancements, which are too numerous to list in detail.

If you want to install Python 3.11 on your Ubuntu 22.04 Jammy Jellyfish or Ubuntu 20.04 Focal system, you can use the command line terminal and Python LaunchPAD PPA. The following guide will demonstrate how to do it step-by-step.

Step 1: Pre-Install Commands

Update Ubuntu

Running an update in your terminal before installing Python 3.11 is highly recommended to avoid any potential conflicts during installation. This will ensure that all packages are up-to-date using the following command:

sudo apt update

If you wish, you can list the updates to review or for those curious about them.

sudo apt --list upgradable

You can upgrade any outdated packages by using the following command.

sudo apt upgrade

Install Dependencies

To complete the installation, install the following packages that are required. These are most likely installed but run the command to be safe:

sudo apt install ca-certificates apt-transport-https software-properties-common lsb-release -y

Situational: LaunchPAD GPG Key

If you haven’t previously imported a GPG key from the Ubuntu keyserver, you may encounter issues importing GPG keys from LaunchPAD PPAs via the command line terminal. This is because the necessary directories may not have been created. Fortunately, this is an easy fix – use the following command to generate the directories.

sudo gpg --list-keys

Example output:

gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created

Step 2: Import Python LaunchPAD PPA

By default, Python is available on Ubuntu distributions, but often you do not have choices, and it is not updated when new releases come out. The guide will import a well-known third-party PPA that is widely used and respected so you can install the latest version of Python 3.11.

First, import the GPG key with the following command:

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/deadsnakes.gpg --keyserver --recv-keys F23C5A6CF475977595C89F51BA6932366A755776

If the GPG key fails to import, check the pre-install section for the GPG key part if you have not previously imported a GPG key securely.

Example output:

gpg: keybox '/usr/share/keyrings/deadsnakes.gpg' created
gpg: key BA6932366A755776: public key "Launchpad PPA for deadsnakes" imported
gpg: Total number processed: 1
gpg:               imported: 1

Now that the GPG key has been successfully imported, you can import the LaunchPAD PPA with the following command:

echo "deb [signed-by=/usr/share/keyrings/deadsnakes.gpg] $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/python.list

Before proceeding, run an APT update to ensure that the newly imported PPA is reflected.

sudo apt update

Step 3: Install Python 3.11

Now that the Python 3.11 PPA has been successfully imported, you can install Python 3.11 by running the following command in your terminal.

sudo apt install python3.11

Use the following command to verify the installation and build version of Python 3.11.

python3.11 --version

If desired, you can also install the following additional extras for Python 3.11:

  • Debug module:
sudo apt install python3.11-dbg
  • Developer (dev) module:
sudo apt install python3.11-dev
  • VENV (virtual environment) module:
sudo apt install python3.11-venv
  • Distutils module:
sudo apt install python3.11-distutils
  • lib2to3 utility module:
sudo apt install python3.11-lib2to3
  • DBM.GNU module:
sudo apt install python3.11-gdbm
  • Tkinter module:
sudo apt install python3.11-tk

To install all the extras in one go, run the following command.

sudo apt install python3.11-full

Step 4: Install Python PIP with 3.11

For most users using the Python PPA repository, installing Python 3.11 can be accomplished simply by running the following APT command.

sudo apt install python3-pip

Pip should already be installed, but if you encounter issues and need to reinstall it manually, follow these steps to download using the wget command.


After downloading the file, the next step is to install it.


After installation, checking for upgrades is recommended to ensure you have the latest version of Pip.

python3 -m pip install --upgrade pip

You can verify the version of Pip 3.11 that is installed by running the following command.

pip --version

With these commands, you can install and upgrade Pip for Python 3.11, enabling you to install additional Python packages and libraries.

Switch Default Python Versions on Ubuntu Linux

If you have multiple versions of Python installed on your system and want to set a particular version as the default, you can follow these steps to switch between them.

Firstly, you need to add symbolic links for each Python version separately. To do this, run the following commands:

Here’s an example (you can customize this or copy it):

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 4
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 5
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 6
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.12 7

Example output:

Note that the number at the end of each command (i.e., 1, 2, 3, etc.) represents the priority of the version. A higher number means a higher priority. In this example, Python 3.12 has the highest priority (7), and Python 2.7 has the lowest priority (1).

To switch to a different version of Python, you can enter the corresponding selection number in the following command:

sudo update-alternatives --config python

Example output:

For instance, if you want to set Python 3.11 as the default, you would enter the number 6. The output of the command should look like this:

If the command is successful, you will see the following output:

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

This indicates that Python 3.11 has been set as the default version. By following these steps, you can easily switch between different versions of Python on your Ubuntu Linux system.


In conclusion, installing Python 3.11 on Ubuntu Linux is a straightforward process that can be achieved using a PPA repository and APT commands. Python 3.11 has numerous improvements, bug fixes, and new features compared to its predecessors. It is ideal for various use cases, including web development, data analysis, scientific computation, and artificial intelligence. With the help of the commands outlined in this guide, users can easily set up and switch between different versions of Python on their Ubuntu Linux systems, enabling them to take advantage of the latest features and improvements of the Python programming language.

FAQ on Python 3.11 with Ubuntu

Q: What are the new features and improvements in Python 3.11, and how do they compare to previous versions?

A: Python 3.11 introduces new features, including structural pattern matching, improved error messages, and new library modules. It also includes numerous bug fixes and performance improvements over previous versions.

Q: Can I use Python 3.11 on older versions of Ubuntu, or do I need to upgrade to the latest version?

A: Python 3.11 is compatible with various Ubuntu versions, including the latest releases and some older ones. However, using the latest version of Ubuntu is recommended to take advantage of the latest features and improvements.

Q: How do I set up a virtual environment for Python 3.11 on Ubuntu, and why is it important?

A: Setting up a virtual environment for Python 3.11 on Ubuntu involves creating a separate Python environment for each project, with its dependencies and packages, such as the python3.11-venv package. This is important because it allows you to avoid conflicts between different projects and ensures that each project has the correct version of Python and its required libraries.

Q: What are the best Python libraries and packages for Ubuntu users, and how do I install them with Python 3.11?

A: The best Python libraries and packages for Ubuntu users depend on the specific needs of each project. However, popular options include NumPy, Pandas, Matplotlib, and Scikit-learn. These can be installed using the pip package manager with Python 3.11.

Q: How can I optimize the performance of Python 3.11 on Ubuntu, and what steps can I take to improve speed and efficiency?

A: Some tips for optimizing the performance of Python 3.11 on Ubuntu include using a virtual environment, avoiding unnecessary imports, and optimizing code with profiling tools. You can also consider using third-party libraries or tools like Cython or PyPy to improve performance.

Q: What are some common errors or issues I may encounter when using Python 3.11 on Ubuntu, and how can I troubleshoot and resolve them?

A: Common issues using Python 3.11 on Ubuntu include dependency conflicts, missing packages, and version incompatibilities. These can often be resolved by updating packages or dependencies, checking for errors in the code, and reviewing documentation or online resources for solutions.

Q: How can I use Python 3.11 for data analysis or scientific computing on Ubuntu, and what tools and libraries are available for these purposes?

A: Python 3.11 is well-suited for data analysis and scientific computing on Ubuntu, with many powerful tools and libraries available. Popular options include NumPy, Pandas, Matplotlib, and Scikit-learn. These can be installed using the pip package manager to perform various data analysis and scientific computing tasks.

Q: How does Python 3.11 integrate with Ubuntu’s package management system, and what are the advantages and disadvantages of using it in this way?

A: Python 3.11 integrates with Ubuntu’s package management system, allowing you to easily install, manage, and update packages and dependencies. The advantage of using this system is that it ensures compatibility and reduces the risk of dependency conflicts. However, some users prefer to use third-party package managers or virtual environments for greater flexibility.

Q: What are some best practices for using Python 3.11 on Ubuntu, and how can I ensure my code is secure and reliable?

A: Some best practices for using Python 3.11 on Ubuntu include using a virtual environment, updating packages and dependencies regularly, and following secure coding practices. You can also review documentation and online resources for guidance on best practices, security, and reliability.

Share to...