Как стать автором
Обновить
89.59
Skillfactory
Онлайн-школа IT-профессий

Заканчивается поддержка Python 3.6

Время на прочтение4 мин
Количество просмотров9K
Автор оригинала: Itamar Turner-Trauring

Приблизительно через 3 недели истекает срок поддержки Python 3.6. Больше никаких исправлений багов и безопасности. При этом сегодня 15% пакетов, загруженных с PyPI, предназначены для Python 3.6. Подробности под катом.


Обновление может повлечь за собой и некоторые другие изменения, поэтому рассмотрим некоторые связанные с этим вопросы, в частности сосредоточившись на дистрибутивах Linux с долгосрочной поддержкой (LTS — Long-Time Support). Я буду во всем полагаться на очень полезный сайт endoflife.date.

Что это значит?

Python 3.6 выпущен в декабре 2016 года, 5 лет назад. Из PEP 494 следует, что:

  • первые два года выпуски исправлений ошибок и исправлений безопасности выходили каждые 3 месяца;

  • после этого релизы происходили по мере необходимости;

  • релизы прекратятся через 5 лет после выхода 3.6.

Декабрь 2021 года — последний месяц, когда будет выпущен Python 3.6. Начиная с января 2022 года, если есть критическая ошибка безопасности, она не будет исправлена командой разработчиков Python.

«Но я на Linux, обновляться не нужно»

Некоторые дистрибутивы Linux гарантируют долгосрочную поддержку в течение известного периода, включая исправление ошибок безопасности. Если вы используете один из этих дистрибутивов, и он содержит Python 3.6, вы можете рассчитывать на то, что дистрибутив предоставит исправления безопасности, даже если команда разработчиков Python этого не сделает. Теоретически вам пока не нужно обновлять систему. Но на практике есть подводные камни.

Старые версии дистрибутива со временем перестанут поддерживаться:

  • Ubuntu 18.04 прекращает обновления безопасности в апреле 2023-го.

  • RHEL 7 прекращает обновления безопасности в июне 2024 года.

Хотя вы будете получать обновления безопасности, вы не обязательно получите другие исправления ошибок. И Ubuntu 18.04, и RHEL 7 сейчас ограничиваются обновлениями безопасности.

Ваши зависимости перестанут получать обновления. Сторонние библиотеки и фреймворки Python начнут отказываться от поддержки Python 3.6. А это значит, что если в этих библиотеках есть критическая ошибка, то исправление может быть недоступно в Python 3.6, а ваш дистрибутив Linux очень не любит делать бэкпорты для всех существующих библиотек Python.

Это происходит в мире Java, где обновление до версии log4j с исправлением критической ошибку безопасности требует достаточно новой версии Java. Если вы не обновились, у вас проблемы.

«Но я на Ubuntu 20.04/RHEL 8, у меня много времени»

Если вы работаете на новом дистрибутиве Linux с LTS, то у вас есть ещё столько лет исправлений безопасности и багов в Python 3.6. Но по-прежнему существуют две проблемы:

  • сокращение поддержки: команды дистрибутивов Linux ограничены во времени, а также имеют не столь богатый опыт по сравнению с командой разработчиков Python. Я уверен, что критические исправления будут внесены, но случайные раздражители останутся;

  • сторонние зависимости перестанут получать обновления. LTS Linux здесь не поможет, за исключением случаев, когда вы работаете только с зависимостями из дистрибутива.

Дело в том, что и Ubuntu 20.04, и RHEL 8 сейчас поставляют Python 3.9. Вы можете обновить систему, не меняя дистрибутив Linux или способ установки Python. Просто выполните apt-get install python3.9 или dnf install python 3.9. Есть пакет Python 3.8, он может быть полезен как промежуточный.

Обновления

В краткосрочной перспективе ваша задача — как можно скорее перейти на поддерживаемые версии ваших зависимостей.

В целом выпуски Python 3 обратно совместимы. Поэтому теоретически вы можете просто перейти на версию 3.7, исправить все ошибки, затем перейти на версию 3.8, и так до Python 3.9 или, после января 2022, Python 3.10.

Проблема заключается в том, что библиотеки, от которых вы будете зависеть, перестанут поддерживать старые версии Python. Посмотрим на Django, вот таблица поддержки версий и endoflife.date/django:

  • Django 2.2 (LTS) будет получать исправления безопасности до апреля 2022 года и поддерживает Python 3.5–3.9.

  • Django 3.2 (LTS) имеет исправления безопасности до апреля 2024 года и поддерживает Python 3.6–3.10.

  • Последний релиз — Django 4.0, он поддерживает Python 3.8–3.10.

Если вы используете Django 2.2, у вас есть 3 месяца, чтобы перейти на Django 3.2. А если вы всё ещё на Python 3.5, то у вас ещё больше проблем: Django 3.2 его не поддерживает. Если вы работаете на Django 3.x, просто убедитесь, что вы на Django 3.2 и всё в порядке.

Апгрейд: долгосрочно

В конце концов Python 3.9 перестанет получать обновления. Django 3.2 перестанет получать обновления. Ubuntu 20.04 и RHEL 8 также перестанут получать обновления.

Если вы откладываете обновление до последней минуты, то оно станет мучительным, потому что вам придётся вносить большое количество серьёзных изменений сразу. И если вы в декабре 2021 года всё ещё на Python 3.6, то это признак организационной проблемы. Следующим шагом должно стать создание процесса, который будет обновлять ваши зависимости регулярно.

Научиться плотно работать с Python вы сможете на наших курсах:

Узнайте подробности акции.

Другие профессии и курсы
Теги:
Хабы:
+2
Комментарии25

Публикации

Информация

Сайт
www.skillfactory.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия
Представитель
Skillfactory School