Home Assistant: Migration auf Python 3.8
Ab Februar 2021 soll Home Assistant nur noch Python 3.8 unterstützen. Also muss das Python virtual Environment entsprechend aktualisiert werden.
Python 3.8 installieren
Da Python 3.8.x nicht aus dem Debian Repositories installiert werden kann, und ich auch kein Backport gefunden habe, muss die entsprechende Version entsprechend installiert werden:
# Falls ein Python virtual Environment gearde aktiviert ist,
# muss es zunächst deaktiviert werden.
deactivate
# Nötige Pakete installieren
apt update
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev
# aktuelle Python Version herunterladen und entpacken
cd /tmp
curl -O https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tar.xz
tar -xf Python-3.8.2.tar.xz
# Python 3.8 übersetzen
cd Python-3.8.7/
./configure --enable-optimizations --enable-loadable-sqlite-extensions
make -j 4
# Python 3.8 als parallele Version installieren
make altinstall
# Python 3.8 Version überprüfen
python3.8 -V
Home Assistant virtual Env aktualisieren
Wurde die Python-Version entsprechend installiert wurde kann jetzt das Home Assistant Virtual Environment aktualisiert werden.
Hinweis: Home Assistant im virtual Environment zu installieren ist nicht die empfohlene Weise Home Assistant zu betreiben, vor allem, weil auf diese Weise die HA Add-Ons nicht genutzt werden können. Daher wird seitens Home Assistant empfohlen eher Home Assitant OS oder die Docker-Variante zu verwenden (siehe https://www.home-assistant.io/docs/installation/)
Info: In meiner Installation wird die Home Assitant instanz im Kontext des Benutzers hass
ausgeführt. Daher müssen einige der folgenden Befehle ggf. entsprechend angepasst werden, wenn sich die Installation bei Dir unterscheidet.
# Home Assistant stoppen
systemctl stop home-assistant@hass.service
# in den Benutzerkontext von Home Assistant wechseln
sudo -u hass -i
# Liste mit den im aktuellen venv installierten paketen erzeugen
pip3 freeze —local > /home/hass/requirements.txt
# venv verlassen und wieder in den root-Kontext wechseln
deactivate
exit
# Backup der Home Assistant settings
tar cvfz .homeassistant-backup.tgz /home/hass/.homeassistant
# bestehendes Home Assistant virtual Environment sichern
mv /srv/homeassistant/ /srv/homeassistant-backup
# neues virtual Environment erstellen
sudo -i -u hass
python3.8 -m venv /srv/homeassistant
# neues venv aktivieren
source /srv/homeassistant/bin/activate
# Versionen im venv überprüfen
python —version
python3 —version
pip3 —version
# Home Assistant im neuen Container wiederherstellen
pip3 install wheel
pip3 install -r /home/hass/requirements.txt
# Wieder in den root-Kontext wechseln
deactivate
exit
# Home Assistant starten
systemctl start home-assistant@hass.service
Hinweis: Sollte die Installation der Pakete aus der Datei requirements.txt
fehlschlagen, so kann das entsprechende Pakete in der Datei auskommentiert werden und die Installation mit pip3 install -r /home/hass/requirements.txt
erneut gestartet werden.
Nachdem sichergestellt ist, dass alles fehlerfrei funktioniert, können die Backups in de Verzeichnissen /srv
und /home/hass
gelöscht werden.
Kommentare