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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Приблизительно через 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 вы сможете на наших курсах:

  • Профессия Fullstack-разработчик на Python (15 месяцев)

  • Профессия Data Scientist (24 месяца)

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

Другие профессии и курсы

Data Science и Machine Learning

  • Профессия Data Scientist

  • Профессия Data Analyst

  • Курс «Математика для Data Science»

  • Курс «Математика и Machine Learning для Data Science»

  • Курс по Data Engineering

  • Курс «Machine Learning и Deep Learning»

  • Курс по Machine Learning

Python, веб-разработка

  • Профессия Fullstack-разработчик на Python

  • Курс «Python для веб-разработки»

  • Профессия Frontend-разработчик

  • Профессия Веб-разработчик

Мобильная разработка

  • Профессия iOS-разработчик

  • Профессия Android-разработчик

Java и C#

  • Профессия Java-разработчик

  • Профессия QA-инженер на JAVA

  • Профессия C#-разработчик

  • Профессия Разработчик игр на Unity

От основ — в глубину

  • Курс «Алгоритмы и структуры данных»

  • Профессия C++ разработчик

  • Профессия Этичный хакер

А также:

  • Курс по DevOps

  • Все курсы

Источник: https://habr.com/ru/company/skillfactory/blog/595477/


Интересные статьи

Интересные статьи

Несколько лет назад были очень популярны статьи о том, „как ввести типы в Питон“, вернее добавить статическую типизацию. Язык Питон очень хорош для написания простых программ с небольшим количеством в...
Язык Python предоставляет всем пользователям возможность создавать свои пакеты и делиться ими со всем сообществом. Так появлялись очень популярные библиотеки для работы с данными (Panda...
Python становится все популярнее благодаря относительной простоте изучения, универсальности и другим преимуществам. Правда, у начинающих разработчиков нередко возникают проблемы при ра...
Да это немного ненависти пост, но с верой в новогоднее чудо, вдруг добрый дедушка мороз придёт и настучит по голове поможет продакт менеджеру расставить приоритеты в развитии продукта и м...
Сегодня публикуем вторую часть перевода материала, посвящённого статическому анализу больших объёмов серверного Python-кода в Instagram. → Первая часть