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

PostadresseE-MailadresseFestnetzMobiltelefonSMS/SignalThreemaTwitter DirektnachrichtFAXWeb Page