Thanks for a great guide @Pieter_Rossouw ! Below is a quick guide that describe what I did to go from Python 3.11 to 3.12.
Assumptions
- HA is run as root. I personally run it in a LXC container (Proxmox). See additional steps provided in the first post in this thread for steps required to use a different user.
- The Python runtime previously installed using the deadsnakes PPA.
- Packages already installed:
apt install wget build-essential libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev python3-pip
Install new python version
apt install python3.12 python3.12-dev python3.12-venv
Stop HA
systemctl stop home-assistant@root
Write package requirements to requirements.txt
cd /root/.homeassistant
source /srv/homeassistant/bin/activate
pip3 freeze –local > requirements.txt
exit
Backup existing HA runtime
cd /srv
mv homeassistant homeassistantold
Set up new runtime
cd /srv
mkdir homeassistant
cd /srv/homeassistant
python3.12 -m venv .
Activate python env
source /srv/homeassistant/bin/activate
Install dependencies
cd /root/.homeassistant
pip3 install --upgrade pip
pip install --upgrade pip
pip3 install -r requirements.txt
Install HA
pip3 install homeassistant
Start it again
systemctl start home-assistant@root