MAJ Python pour Home Assistant

Sommaire

Introduction

Depuis quelque temps, la notification suivante apparait sur l’interface Web d’Home Assistant, ma solution domotique :

Python 3.6 support is deprecated and will be removed in the first release after December 15, 2019. Please upgrade Python to 3.7.0 or higher. Home Assistant

Étant sur la version 18.04 LTS d’Ubuntu, la dernière version de Python disponible sur leur dépôt est la 3.6.9.

La mise à jour suivante d’HA (Home Assistant) arrive après la fin du support de Python 3.6. Ne savant pas ce que cela peut engendré, je n’ai plus fait de MAJ depuis.

J’ai depuis peu trouvé une façon cohérente de le faire et c’est ce que je vous partage ici.

Installation de Python 3.8

Ajout du packet

HA étant mis à jour assez régulièrement, j’ai décidé de passer directement à la version 3.8 plutôt qu'à la 3.7.

Pour cela, on ajoute le dépôt deadsnakes à notre serveur (on valide l’ajout avec la touche [ENTRER]). On met ensuite à jour la liste des dépôts et l’on installe Python 3.8.

1
2
3
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8 python3.8-dev python3.8-venv

On valide l’installation en demandant un retour de la version de Python avec la commande python3.8 --version. Pour ma part, j’ai la version 3.8.1.

Configuration de la version par défaut

Si je tape la commande python –version, j’obtiens la version 3.6.9.
Pour remédier à cela, on va ajouté la version 3.8 à notre liste de version et la séléctionner par défaut.

La commande sudo update-alternatives --config python me donne le résultat suivant :

Liste des versions de Python
Liste des versions de Python

Pour ajouter Python 3.8 à cette liste j’utilise la commande suivante (ou le “3” à la fin représente la priorité, 3 car 0, 1 et 2 sont déjà prises) :

1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 3

Ainsi, je relance la commande sudo update-alternatives –config python et sélectionne “3” pour la version 3.8.
Je vérifie ensuite en reprenant la commande python --version.

La version 3.8 étant installé, on peut passé à la migration d’HA.

Migration d’HA

Pour cette partie, on va stopper le service et copier les données système avant d’initier la nouvelle installation. La configuration elle n’est pas touchée.

1
2
3
4
5
sudo systemctl stop home-assistant@homeassistant.service
sudo mv /srv/homeassistant /srv/homeassistant_old
sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant -R /srv/homeassistant
cd /srv/homeassistant

On crée ensuite notre nouvel environnement virtuel et l’on installe HA.

1
2
3
4
5
6
sudo -u homeassistant -H -s
/usr/bin/python3.8 -m venv .
pip install pip

pip install homeassistant==0.102.3
exit

Vous remarquerez que j’installe explicitement la version 0.102.3 d’HA. Je fais cela, car c’est la version que j’utilise actuellement. Je lancerais ensuite les commandes de mise à jour afin de limiter les problèmes avec ma configuration.

On lance ensuite HA avec la commande habituelle sudo systemctl start home-assistant@homeassistant.service. Pour moi, le lancement à pris 8 minutes !

Conclusion

Je pensais que cette procédure était compliquée, car je ne comprends pas encore le système d’environnement virtuel, mais j’ai quand même réussi.

Maintenant, je vais devoir mettre à jour HACS. Je pense avoir de vrai problème le dessus…

Edit : HACS est partie en ******** ! J’ai du tout supprimé et réinstallé. Heureusement, les addons et les plugins que j’ai ajouté via HACS n’ont rien subit. Je les ai réinstallés afin qu’ils reviennent dans la liste des trucs installés de HACS.