Compile/install Python 3.8 on Raspberry Pi

Raspbian Buster 10 for Raspberry Pi includes Python 3.7. Here is how to compile Python 3.8 on the Raspberry Pi.

If you need to use apt installed Python modules that access hardware like GPIO, you can always access system Python 3.7 via /usr/bin/python3

Compile Python interpreter

In general, one of the few times you should ever use sudo on a Linux computer is apt install.

Get prereqs on your ARM device:

apt install libffi-dev libbz2-dev liblzma-dev libsqlite3-dev libncurses5-dev libgdbm-dev zlib1g-dev libreadline-dev libssl-dev tk-dev build-essential libncursesw5-dev libc6-dev openssl git

Extract the latest Python source code

Configure (3 minutes on Raspberry Pi 2):

cd cpython-3.8*

./configure --prefix=$HOME/.local --enable-optimizations

Build and install–this step takes 10-40 minutes, depending on Raspberry Pi model. Do not use sudo!

make -j -l 4
make install

Note: don’t omit -l 4 or Pi will be quickly overwhelmed and error build. This limits load average to 4. Without it, load average will soar to 100+ (bad).

Add to ~/.bashrc:

export PATH=$HOME/.local/bin/:$PATH

then open a new Terminal

Verify

Check that which python3 and which pip3 etc. refer to ~/.local/bin/ instead of /usr/bin. Don’t uninstall system Python 3 /usr/bin/python3 because system packages depend on it. The PATH you set in Step 5 above makes Linux prefer the new Python.

Notes

reference

Why upgrade Python?

Python 3.8 brings further speed / efficiency improvements. Specific benefits include: