Если вы пользуетесь Home Assistant, то после очередного обновления могли заметить на появившееся уведомление о том, что «Support for the running Python version 3.7.3 is deprecated and will be removed in the first release after December 7, 2020. Please upgrade Python to 3.8.0 or higher».
В стандартных системных репозиториях обычно содержатся стабильные и надежные версии пакетов, а не самые свежие и актуальные. И по состоянию на середину января 2021 года Python в репозиториях Debian и Ubuntu так и не спешат обновлять до версии 3.8.x.
Поэтому единственный вариант убрать назойливое уведомление и избавить себя от возможных проблем с совместимостью грядущих обновлений Home Assistant — это установить новую версию Python вручную, предварительно собрав ее из исходников.
Исходные данные
В этой статье я буду исходить из того, что:
- У вас уже установлен Home Assistant
- Он установлен в виртуальное окружение Python
- Используется операционнная система на базе Debian или Ubuntu
Если вы пользуетесь Docker-контейнерами или дистрибутивом Hass.io, то обновлять пакеты вручную вам не придется.
Обновление Python
Для начала остановим Home Assistant:
sudo systemctl stop home-assistant@homeassistant.service
Установим нужные для сборки из исходников пакеты:
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 libxslt-dev libxml2-dev libjpeg-dev zlib1g-dev
Скачаем и распакуем архив с Python 3.9.1:
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz tar xzvf Python-3.9.1.tgz cd Python-3.9.1
Соберем его из исходников и запустим установку:
./configure --enable-optimizations make -j 4 sudo make install
Процесс сборки занимает около 12 минут на Raspberry Pi 4, поэтому придется запастись терпением.
После завершения установки можно проверить, что Python действительно обновился путем выполнения двух команд:
python3 --version pip3 --version
И если в консоли появится такие ответы, то процесс обновления прошел успешно:
Теперь обновим менеджер пакетов pip:
sudo /srv/homeassistant/bin/python3.9 -m pip install --upgrade pip sudo python3.9 -m pip install --upgrade pip
В случае если после обновления Python при запуске Home Assistant появится ошибка с доступностью библиотеки libffi.so.7 можно создать симлинк с libffi.so.7 на нее:
sudo ln -s /usr/lib/arm-linux-gnueabihf/libffi.so.6 /usr/lib/arm-linux-gnueabihf/libffi.so.7
Если симлинк не создается, то значит в вашей системе libffi.so.6 находится по другому пути. Найдите корректный путь через поиск по названиям файлов:
find /usr/lib -name "libffi.so*"
Переустановка Home Assistant
Теперь переустановим Home Assistant. Для этого сохраним в файл список используемых им пакетов Python:
cd /home/homeassistant/ sudo -u homeassistant -H -s source /srv/homeassistant/bin/activate pip3 freeze –local > requirements.txt deactivate exit
Удалим директорию с установленным Home Assistant и создадим ее заново:
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 pip3 install wheel pip3 install -r /home/homeassistant/requirements.txt
И, наконец, перезапустим сервис Home Assistant:
sudo systemctl restart home-assistant@homeassistant
На этом процесс обновления завершен окончательно, и после перезапуска из панели уведомлений должно исчезнуть сообщение о неподдерживаемой версии Python.
(c) Dmitry's notes https://dmitrysnotes.ru/home-assistant-obnovlenie-python