!! How to Upgrade to a Newer Version of Python

Most Linux installations include a version of both Python 2 and 3.

You can view your current default version of Python (version 2) using the command:
{{{
  % python -V
}}}
This will respond with something akin to:
{{{
Python 2.7.16
}}}

You can also check your version of Python 3:
{{{
  % python3 -V
}}}
with the response being akin to:
{{{
Python 3.7.3
}}}

To prepare to upgrade to a newer version of Python, first make sure your Pi is up to date, as well as install the required development packages:
{{{
sudo apt update
sudo apt upgrade
sudo apt-get install -y build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev
}}}

Then, to install a specific version of Python, e.g., 3.8.5, download, configure, make and install the package:
{{{
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz

tar zxf Python-3.8.5.tgz
cd Python-3.8.5
./configure --enable-optimizations
make -j4
sudo make install
}}}
or alternatively:
{{{
sudo make altinstall
}}}
if you don't want the newly-installed version to be the default version on your Pi. The latter is an __absolute requirement__ on a typical Ubuntu desktop (for example), as if you replace the default version of Python you __will__ disable/break your OS (e.g., see [How to Install Python 3.8 on Ubuntu|https://tech.serhatteker.com/post/2019-12/how-to-install-python38-on-ubuntu/]). On a Raspberry Pi this isn't so far as I've seen a problem. But note that I typically use a console (headless), not a desktop.

In the above directions, replace "3.8.5" above with whatever version you want to install. You can browse the directory of available downloads at: [https://www.python.org/ftp/python]


%%information
You must be patient. On a Pi 4, this can take a long time, around 20 minutes; on a 3 B+ a very long time. On a Pi Zero basically overnight.

If you're logging into your Pi remotely to do the upgrade, it's interesting to run a second ssh session with {{top}} or {{htop}} running, to watch your Pi's processors working very hard.
%%


----

[{Tags Python}]