Python 3.7 was a significant release for the language. It introduced data classes, a decorator that automatically generates common methods like __init__, __repr__, and __eq__ from the fields you define, removing a lot of repetitive code. It also added postponed evaluation of type annotations, context variables through the contextvars module, and more predictable module attribute access.
Ubuntu 18.04 ships with Python 3.6 by default. Python 3.7 is not in the standard repositories, so you need to add a third-party PPA or compile it from source. This guide covers both options. The same steps work on Ubuntu 16.04 and other Ubuntu-based distributions.
<strong>Prerequisite:</strong> You need sudo access.
If you just need Python 3.7 up and running quickly and are comfortable with third-party repositories, use Method 1. It installs in a few minutes and receives automatic security updates through the PPA. If you are on a controlled server without PPA access, Method 2 gives you a fully independent build.
The deadsnakes PPA maintains current Python packages for Ubuntu and is the simplest way to install Python 3.7 without any compilation.
Update the package list and install the prerequisites:
bashsudo apt updatesudo apt install software-properties-common
Add the deadsnakes PPA:
bashsudo add-apt-repository ppa:deadsnakes/ppa
Press Enter when prompted to confirm.
Install Python 3.7:
bashsudo apt install python3.7
Verify the installation:
bashpython3.7 --version
Output:
Python 3.7.3
Python 3.7 is now available on your system alongside the default Python version. Run python3 --version to confirm your system Python is still intact.
Building from source gives you a self-contained Python 3.7 install with no dependency on any external PPA. This is the right choice for locked-down server environments or when you want full control over the build configuration.
Install the required build tools and development libraries:
bashsudo apt updatesudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev wget libbz2-dev
Download the Python 3.7 source code:
bashwget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
Extract the archive:
bashtar -xf Python-3.7.4.tgz
Switch into the source directory and run the configure script. The --enable-optimizations flag runs a series of internal benchmark tests to fine-tune the Python binary. It slows the build but produces a faster interpreter:
bashcd Python-3.7.4./configure --enable-optimizations
Start the build. The -j flag sets the number of parallel compile jobs. Match it to your CPU core count for the fastest build time. To check how many cores your system has, run nproc:
bashmake -j 8
Install the binaries using altinstall:
bashsudo make altinstall
Always use altinstall instead of the standard make install. The standard command overwrites the python3 symlink on your system, which can break tools and packages that depend on the default Python version.
Verify the installation:
bashpython3.7 --version
Output:
Python 3.7.4
Once installed, Python 3.7 is accessible as python3.7 and sits alongside your system Python without replacing it. Install pip separately with python3.7 -m ensurepip if you need package management for this version.
Python 3.7 is now installed on your Ubuntu 18.04 machine. From here, set up pip for package management and create Python virtual environments to keep your project dependencies isolated. Leave a comment below if you run into any build or installation errors.