Pythonin päivitys, Home Assistant virtuaaliympäristössä
Home Assistant on rakennettu Python -ohjelmointikielellä. Home Assistant tukee yleisesti uusinta vakaata Python versiota ja yhtä aikasempaa pikkuversiota. Kirjoitushetkellä Pythonista on jokin aika sitten julkaistu versio 3.9.0. Se tarkoittaa että Home Assistant tukee jatkossa Pythonin 3.9.x ja 3.8.x versioita. Tuki 3.7.x versiolle päättyy.
Oma Home Assistant -asennukseni on ajalta jolloin Hassbian -asennusvaihtoehto oli vielä olemassa. Eli käytännössä laitteessa on Debianiin pohjautuva Raspbian (nykyisin Raspberry Pi OS), jossa Home Asistantia ajetaan Python -virtuaaliympäristössä (venv).
Python päivitetään komentoriviltä esimerkiksi SSH-yhteyden avulla. Ensiksi varmistetaan että järjestelmään on asennettuna kääntämiseen tarvittavat paketit:
sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev
Tämän jälkeen Python ladataan, käännetään ja asennetaan:
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
tar -xzf Python-3.9.0.tgz
cd Python-3.9.0
./configure --enable-optimizations --enable-loadable-sqlite-extensions
make
sudo make altinstall
Itsellä edellä olevat vaiheet kestivät Raspberry Pi 3B+:lla lähes kaksi tuntia. –enable-loadable-sqlite-extensions -parametri tarvitaan jos käytössä on MySQL/MariaDB -tietokanta.
Seuraavaksi tallennetaan tieto mitä paketteja Home Assistant tällä hetkellä käyttää, jotta ne saadaan asennettua myöhemmin uudelleen:
cd /home/homeassistant/ sudo -u homeassistant -H -s source /srv/homeassistant/bin/activate pip3 freeze –local > requirements.txt exit
Poistetaan vanha virtuaaliympäristö ja asennetaan uusi:
sudo systemctl stop home-assistant@homeassistant sudo rm -r /srv/homeassistant/ sudo mkdir /srv/homeassistant sudo chown homeassistant:homeassistant /srv/homeassistant sudo -u homeassistant -H -s cd /srv/homeassistant python3.9 -m venv . source /srv/homeassistant/bin/activate
Python -pakettien uudelleenasennus sekä Home Assistantin asennus (päivitys) ja käynnistys:
cd /home/homeassistant pip3 install -r requirements.txt pip3 install --upgrade homeassistant exit sudo systemctl restart home-assistant@homeassistant
Lopuksi aluksi ladattu Pythonin asennuspaketti Python-3.9.0.tgz ja siitä purettu hakemisto voidaan poistaa.
2 thoughts on “Pythonin päivitys, Home Assistant virtuaaliympäristössä”
Kiitos loistavista vinkeistä. Omasta venv-ympäristöön asennetusta home assistantistani hajosi tässä prosessissa mysensors-integraatio, koska oletuksena asennettu versio intelhex-kirjastosta ei toimi python 3.9:n kanssa.
Lisätietoja:
https://github.com/home-assistant/core/issues/41617
ja
https://github.com/python-intelhex/intelhex/issues/45
Korjaus oli:
(homeassistant) homeassistant@server:~/.homeassistant $ pip install –upgrade intelhex
Kiitos kommentista. Itselläkin oli jokunen erikoisempi kirjasto, jotka vaativat erityishuomiota. Jokainen HASS -asennus on hieman erilainen, joten en niitä tähän sisällyttänyt. Pythonin 3.9 oli myös ehkä pienoinen riskivalinta sen ollessa niin uusi, mahdollisten yhteensopivuusongelmien vuoksi. 3.8.x olisi ollut siinä mielessä turvallisempi valinta.