Обновление Python 3 в Linux для Home Assistant

Home Assistant. Обновление Python

Дата Автор 10 комментариев 11 631 просмотров

Если вы пользуетесь 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

На заметку
Процесс обновления описан на примере актуальной на момент написания статьи версии Python 3.9.1. На странице загрузок 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

И если в консоли появится такие ответы, то процесс обновления прошел успешно:

Обновление Python 3 в Linux для Home AssistantТеперь обновим менеджер пакетов 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.6 на нее:

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.

Автор статьи:
Дмитрий
Руководитель отдела в IT-компании. Веду этот блог с 2013 года, пишу о гаджетах и домашней автоматизации, обозреваю одноплатные компьютеры, неспешно собираю «умный дом».

10 комментария на «Home Assistant. Обновление Python»

    • Нет, настройки хранятся в /home/homeassistant/.homeassistant, а тут затрагивается только /srv/homeassistant.

      Но резервную копию все равно сделать стоит.

      • Не мог поменять версию до тех пор, пока не сделал обновление по этому туториалу: https://community.home-assistant.io/t/python-3-9-install-on-raspberry-pi-os/241558/1

        Видимо часть
        sudo ln -s /usr/local/bin/python3.9 /usr/bin/python3.9
        echo «alias python=/usr/local/bin/python3.9» >> ~/.bashrc
        echo «alias python3=/usr/local/bin/python3.9» >> ~/.bashrc
        source ~/.bashrc
        cd ..
        . ~/.bashrc
        важна для изменения системных параметров версии.

        И в вашем туториале по обновлению hass не сработала строка:

        sudo /srv/homeassistant/bin/python3.9 -m pip install —upgrade pip

        пока не поменял ее на:

        sudo /srv/homeassistant/bin/python3 -m pip install —upgrade pip

        В дальнейшем при использовании

        pip3 freeze –local > requirements.txt

        получаю сообщение:

        Usage:
        pip3 freeze [options]
        no such option: -o

        и на месте requirements.txt получаю пустой текстовый файл, что соответственно при попытке установить hass заново с помощью этого списка пакетов не приводит ни к чему.
        Устанавливал заново по предыдущему вашему туториалу. Вроде бы всё заработало со старыми настройками. Версия hass 2021.2.3

  1. N
    Все сделал по Вашим рекомендациям
    В конце просит ввести пароль .Перепробовал все -не подходят
    Какой пароль нужно вводить

    • «В конце» — это при выполнении команды «sudo systemctl restart home-assistant@homeassistant»?
      Нужно ввести пароль от суперпользователя. Возможно он не задан у вас в системе. В таком случае задайте его, выполнив команду «sudo passwd».

  2. Проверил инструкцию на свежеустановленной Raspberry Pi OS (Raspbian) — все по-прежнему актуально. Разве что сам Python обновился с 3.9.1 до 3.9.2.

  3. Делаю новую установку на USB SSD. Нет смысла обновлять HA, потому сначала по этому руководству обновил Python до 3.9.1, а потом запускаю установку по вашей же инструкции:
    https://dmitrysnotes.ru/raspberry-pi-ustanovka-home-assistant
    В процессе установки HA происходит даунгрейд pip до 20.2.4
    А если я опять обновляю pip:
    /srv/homeassistant/bin/python3 -m pip install —upgrade pip
    то получаю сообщение о ошибке:
    ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.

    We recommend you use —use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.

    homeassistant 2021.10.6 requires pip=8.0.3, but you’ll have pip 21.3 which is incompatible.

    Как быть?

    • Рано или поздно требования HA к версии pip поменяются, ну а пока надо оставить все как есть и пользоваться устаревшей версией pip.

      Ошибок при установке обновлений на HA все равно не будет даже если обновить pip, он просто каждый раз будет даунгрейдиться до нужной версии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

[Хамство, оскорбления и попытки крауд-маркетинга будут удалены]