Приблизительно через 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 гарантируют долгосрочную поддержку в течение известного периода, включая исправление ошибок безопасности. Если вы используете один из этих дистрибутивов, и он содержит 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. Если вы не обновились, у вас проблемы. Если вы работаете на новом дистрибутиве 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 Все курсы