Конец поддержки Python 2.7?

133

Есть ли известная дата / период времени, когда Python 2.7 больше не будет поддерживаться в пользу Python 3?

Stiivi
источник
8
Справедливый вопрос, пока нет дубликатов, я не могу их найти.
Мэтт Джойнер
2
Этот вопрос, похоже, не по теме, потому что он касается поддержки языковой версии
bummi
1
Лучший обзор, который я смог найти, - это эта таблица: docs.python.org/devguide/#status-of-python-branches
Matth
По состоянию на начало 2018 года дата выпуска была указана более точно: сейчас 1 января 2020 года. Когда дистрибутивы с изменением «python» указывают на «python3» - более открытый вопрос.
ESR

Ответы:

109

По состоянию на 13 апреля 2014 года по адресу http://hg.python.org/peps/rev/76d43e52d978 (PEP 373, Python 2.7, график выпуска):

Дата окончания срока службы (EOL, дата завершения) для Python 2.7 перенесена на пять лет в будущее, на 2020 год. Это решение было принято, чтобы прояснить статус Python 2.7 и облегчить беспокойство тех пользователей, которые еще не могут перейти на Python 3. См. Также PEP 466 .

Марко Мариани
источник
23
@ Базовый За исключением того, что он не полон уязвимостей.
Stian OK
5
@StianOK У него есть своя доля: cvedetails.com/vulnerability-list/vendor_id-10210/…
Basic
14
@Basic wellll ... эта доля довольно мала: 25 по всем версиям python (4% кода exec): cvedetails.com/product/18230/Python-Python.html?vendor_id=10210 vs php с 408 (27% кода exec ): cvedetails.com/product/128/PHP-PHP.html?vendor_id=74 или Java с 438 (3% код exec): cvedetails.com/product/19117/Oracle-JRE.html?vendor_id=93 ... Таким образом, под «справедливой долей» вы должны понимать «удивительно низкую долю». Кроме того, все, кроме 3 из этих уязвимостей, также были уязвимостями в версии 3.x, и все последние версии исправлены.
dhj
2
@Basic есть ли у вас лучшее предложение для базового уровня безопасности?
dhj
2
@dhj Да ... не Java! Хорошо, это несправедливо. Помимо шутки и легкомысленности, честный ответ - нет, не знаю. Вот почему я пошел с "справедливой долей". Нет языка, который бы не знал (и не знал) уязвимостей. Я бы сказал, что по общему правилу, чем более широко используется используемый нами язык, тем больше известных уязвимостей, просто как функция проверки или использования за вознаграждение за использование. Я не говорю, что Python хуже других языков с точки зрения безопасности, но и он не лучше. Единственный реальный ответ - это защитное программирование и глубокая безопасность.
Basic
29

В мае 2010 года Слово Божье было сказано, что релизы уровня исправлений для Python 2.7, вероятно, будут производиться как минимум через 6 лет .

Так что, может быть, 2016, возможно, позже.

Изменить: перенесено на 2020 год. См. Редакцию PEP 373, на которую есть ссылки в других ответах.

Фредерик Хамиди
источник
2
Для любого, кто найдет этот ответ в будущем, как объявил сам BDFL на PyCon 2014, обслуживание 2.7 продлено до 2020 года.
Сайлас Рэй
15

Вы должны внимательно прочитать это (ссылка: https://news.ycombinator.com/item?id=7582300 ):

Здесь много комментариев от людей, которых нет в списке python-dev и которые действительно не понимают, что на самом деле означает эта разница. Разработчики ядра не обязаны поддерживать 2.7 после 2015 года, и большинство из них не будут участвовать в этом. Эта часть не изменилась. Происходит то, что Red Hat готовится выпустить релиз RHEL 7, который AFAIK в зависимости от того, сколько вы им платите, они поддерживают в течение 13 лет. Таким образом, им нужно будет выяснить, как поддерживать 2.7 самостоятельно, по крайней мере, до 2027 года. Вот где я читаю между строк. RH имеют полное право разветвлять Python и оставлять свои исправления для себя и своих клиентов (Python не авторское лево). Но, они хорошие ребята, и, возможно, они захотят опубликовать свои изменения хотя бы на некоторое время, если еще есть проект Python, готовый их принять. Опять же, это мое предположение, основанное на обсуждении ML, а не на том, что RH фактически сказал, что они будут делать. Можно провести аналогию с Rails LTS, коммерческим форком Rails 2.x, в котором Patio11 участвовал [0]. Неизбежно кто-то собирается вмешаться для поддержки 2.7, и поэтому давайте посмотрим, что мы можем сделать, чтобы избежать ситуации, когда единственный способ продолжить работу 2.7 - это подписаться на RHEL. Между тем, есть несколько крупных компаний, которые широко используют 2.7 в Windows (например, Enthought, Anaconda), и думают, что, вероятно, время от времени можно будет найти кого-то, кто создаст установщик Windows, при условии, что Python.org все еще будет размещать загрузку. Так что на самом деле то, что здесь происходит, не очень интересно. Основные коммиттеры не делают ничего иного, кроме как покидают проект, как планировалось изначально. Происходит то, что они оставляют свет включенным в репозитории контроля версий и на FTP-сервере, чтобы захватить бесплатную рабочую силу у людей в крупных компаниях, которые заинтересованы в продолжении поддержки 2.7. Альтернативой является то, что RH и другие поставщики создают проприетарные и дорогие форки Python 2.7. В любом случае это может произойти, но вашему работодателю потребуется больше времени, чтобы заметить, что вы должны прекратить вносить свои исправления обратно, если двоичные файлы все еще появляются на python.org и вам не нужно просить ИТ-отдел настраивать SCM и средство отслеживания ошибок, и т.п. Происходит то, что они оставляют свет включенным в репозитории контроля версий и на FTP-сервере, чтобы захватить бесплатную рабочую силу у людей в крупных компаниях, которые заинтересованы в продолжении поддержки 2.7. Альтернативой является то, что RH и другие поставщики создают проприетарные и дорогие форки Python 2.7. В любом случае это может произойти, но вашему работодателю потребуется больше времени, чтобы заметить, что вы должны прекратить вносить свои исправления обратно, если двоичные файлы все еще появляются на python.org и вам не нужно просить ИТ-отдел настраивать SCM и средство отслеживания ошибок, и т.п. Происходит то, что они оставляют свет включенным в репозитории контроля версий и на FTP-сервере, чтобы захватить бесплатную рабочую силу у людей в крупных компаниях, которые заинтересованы в продолжении поддержки 2.7. Альтернатива заключается в том, что RH и другие производители создают собственные и дорогие форки Python 2.7. В любом случае это может произойти, но вашему работодателю потребуется больше времени, чтобы заметить, что вы должны прекратить вносить свои исправления обратно, если двоичные файлы все еще появляются на python.org и вам не нужно просить ИТ-отдел настраивать SCM и средство отслеживания ошибок, и т.п.

Навид Рахими
источник
10

В этой статье говорится: «Когда выйдет 2.7, линия 2.x перейдет на пять лет в режиме только исправления ошибок».

Итак, насколько я вижу, Python 2.7 был последним релизом с добавлением функций 2.x, и, хотя найденные ошибки будут исправлены (в течение некоторого времени), новые функции появятся только в выпусках 3.x.

Арсений
источник
3
В этой статье также утверждается, что в Python 3 введен Unicode, поэтому я бы взял все, что там говорится, с недоверием. Но замените «пять лет» на «минимум пять лет», и это правильно.
Леннарт Регебро
6

PEP 373 (Расписание выпуска Python 2.7) является официальным источником запрашиваемой вами информации.

В настоящее время там написано «Запланированные даты будущих выпусков:»

  • 2.7.7 мая 2014
  • 2.7.8 Ноябрь 2014 г.
  • 2.7.9 мая 2015
  • после этой даты выпускает по мере необходимости

Кроме того, в нем говорится «Дата конца жизни (EOL, дата заката) для Python 2.7 перенесена на пять лет в будущее, до 2020 года».

Отредактировано в апреле 2014 года, согласно http://hg.python.org/peps/rev/76d43e52d978

Д-р Ян-Филип Герке
источник
какое облегчение! мы надеемся, что к тому времени Python 3 будет мертв или переименован в нечто вроде morella, чтобы избежать путаницы.
lowtech
2
@lowtech - Возможно, они к тому времени перешли на Python 4 (возможно, введут новые обратно несовместимые изменения), но я не ожидаю, что 3 вымерли. Основываясь на том, как быстро растет популярность 3 за последние несколько лет, я ожидаю, что к 2020 году в сообществе будет больше людей, использующих 3, чем 2. Я все еще держусь за Python 2, хотя ... недостаточно убедительных изменений, чтобы внести риск перехода на 3. Я много импортирую из будущего .
ArtOfWarfare
6

Руководство разработчика Python перечисляет « Состояние веток Python » от версии 2.6 до текущей версии, включая их текущий статус поддержки с датами окончания срока службы.

В настоящее время поддерживается (ошибка + исправления безопасности):

  • Python 3.8 (текущий мастер / ветка разработки)
  • Python 3.7
  • Python 3.6
  • Python 2.7 (до 01.01.2020)

Только исправления безопасности:

  • Python 3.5
  • Python 3.4
chrki
источник
1

Python 2.7 будет всегда. Его использует слишком много старого кода, который никто не хочет переписывать. Уже есть форк под названием Tauthon, но мы можем увидеть других, если этот бессмысленный срок станет реальностью.

Максимум
источник
2
Это не «бессмысленно» для продуктов EOL, это касается распределения ресурсов. Конечно, поскольку он с открытым исходным кодом, он будет существовать вечно в его нынешнем виде. Но это больше не будет поддерживаться . По крайней мере, официальными сопровождающими. Я не совсем уверен, на какой вопрос вы здесь отвечаете.
deceze
Пользователь спросил, как долго будет поддерживаться Python2.7. Пользователь не спрашивал о поддержке у официальных сопровождающих. С таким проектом, с таким количеством строк кода, на практике будут постоянные обновления, обратные порты и хорошая поддержка Python2 навсегда, не сопровождающими. (Меня унесло мое личное разочарование по поводу всей этой штуки с Python3, отсюда и «бессмысленность»).
Макс
Я считаю этот комментарий уместным. Tauthon идентичен Python 2.7 и, похоже, будет поддерживаться некоторое время. Итак, стоит упомянуть.
Фил
Я понял, что молодые программисты не понимают всю мощь и эффективность, которые обеспечиваются обратной совместимостью. Я никогда не пойму решение Гида ван Россума о причинении вреда, более десятков тысяч часов потерянной жизни, путем преднамеренного нарушения совместимости без какой-либо пользы (ни производительности, ни читабельности).
Макс
1
@Tetragrammaton: Пожалуйста, объясните, почему не совместимость - это хорошо. Пожалуйста, объясните, какой будет "фундаментальный недостаток". Я работаю с Python полный рабочий день более 15 лет, и я не вижу существенной разницы, которая важна для меня. C оставался тем же самым в течение 40 лет и все еще является основным языком и не сильно изменился. Javascript улучшился чрезвычайно за эти годы и все еще обратно совместим. C ++ по-прежнему обратно совместим с C. Windows 10 по-прежнему может запускать программы для Windows 3. Наши процессоры все еще работают с кодом 8086 70-х годов. Мы делаем успехи каждый день, не нарушая поддержки.
Макс