I've found installing python from source on ubuntu just makes your life easier. Python depends on a few system binaries and linked libraries so you need to ensure they are present first.
sudo apt install software-properties-common build-essential \ libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev \ tk-dev libgdbm-dev libc6-dev libbz2-dev libncurses-dev libgdbm-dev \ libpcap-dev libexpat1-dev libffi-dev liblzma-dev libgdbm-compat-dev
Get the latest tarball link from python.org Linux/Unix
cd /opt sudo wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz sudo tar xzf Python-3.9.1.tgz #read the readme cat README.rst
It will tell you what to do:
./configure make make test sudo make install
Python3.8 is installed by default...so to create a virtual environment use:
python3.9 -m venv env