This is based on Method 2 in https://websiteforstudents.com/installing-the-latest-python-3-7-on-ubuntu-16-04-18-04/
First, you need to install Python 3.7 (you will currently have Python 3.5.2):
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.7
You now have two different versions of Python 3!
$ python3 --version
# Outputs 3.5.2
$ python3.7 --version
# Outputs 3.7
So you need to use pipenv but tell it to use Python 3.7 instead.
In a brand new folder do this:
pipenv --python=python3.7 install jupyterlab
Now you should be able to continue using the regular commands in that folder, e.g.
pipenv install altair
pipennv install pandas
pipenv run jupyter lab
Worked with Orange Pi One and Python 3.7.7, thanks!
Initially I've tried to build the latest Python 3.12.1, but it failed to build due to the outdated openssl. As my app (to be migrated from Raspberry Pi) is made for 3.7, I chose to download that version, and it worked well.
The new version was installed into /usr/local/bin/python, so I've then run:
$ sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3
$ update-alternatives --config python
to link /usr/bin/python to it (should it break anything in this old Ubuntu, it'll be very easy to revert using the latter command).
After running configure, I've also added: "-march=native -mtune=native" to BASECFLAGS in the makefile. Not sure if it will help this old and slow SBC a bit, but as I do not plan to use this build on another machine, it won't hurt.