Koniec wsparcia dla Pythona 2.7?

133

Czy jest znana data / ramy czasowe, kiedy Python 2.7 nie będzie już obsługiwany na korzyść Pythona 3?

Stiivi
źródło
8
Uczciwe pytanie, o ile nie ma duplikatu, nie znalazłem żadnego.
Matt Joiner,
2
To pytanie wydaje się nie na temat, ponieważ dotyczy wsparcia wersji językowej
bummi
1
Najlepszy przegląd, jaki udało mi się znaleźć, to ta tabela: docs.python.org/devguide/#status-of-python-branches
mate
Od początku 2018 roku data upuszczenia została określona dokładniej: teraz jest 1 stycznia 2020 roku. Kiedy dystrybucje ze zmianą „python” na „python3” jest bardziej otwartą kwestią.
ESR

Odpowiedzi:

109

Od 13 kwietnia 2014 r. Z http://hg.python.org/peps/rev/76d43e52d978 (harmonogram wydań PEP 373, Python 2.7):

Data końca życia (koniec okresu eksploatacji, data wygaśnięcia) dla Pythona 2.7 została przesunięta o pięć lat w przyszłość, do 2020 r. Ta decyzja została podjęta w celu wyjaśnienia statusu Pythona 2.7 i złagodzenia zmartwień tych użytkowników, którzy nie mogą jeszcze przejść na Python 3 Patrz także PEP 466 .

Marco Mariani
źródło
23
@Basic Z wyjątkiem tego, że nie jest pełen luk w zabezpieczeniach.
Stian OK
5
@StianOK Ma swój sprawiedliwy udział: cvedetails.com/vulnerability-list/vendor_id-10210/…
Podstawowy
14
@Basic welll ... ten udział jest dość niewielki: 25 na wszystkie wersje Pythona (4% kodu exec): cvedetails.com/product/18230/Python-Python.html?vendor_id=10210 w porównaniu z php z 408 (27% kodu exec ): cvedetails.com/product/128/PHP-PHP.html?vendor_id=74 lub Java z 438 (3% kodu exec): cvedetails.com/product/19117/Oracle-JRE.html?vendor_id=93 ... Zatem przez „sprawiedliwy udział” musieliście mieć na myśli „wyjątkowo niski udział”. Ponadto wszystkie z wyjątkiem trzech luk w zabezpieczeniach również zawierały luki w wersji 3.x, a wszystkie aktualne wersje zostały naprawione.
dhj
2
@Basic Czy masz lepszą sugestię dotyczącą podstawy bezpieczeństwa?
dhj
2
@dhj Yes ... Not Java! Ok, to niesprawiedliwe. Pomijając żarty / nonszalancję, szczera odpowiedź brzmi: nie, nie mam. Dlatego zdecydowałem się na „sprawiedliwy udział”. Nie ma języka, który nie miałby znanych (i nieznanych) luk w zabezpieczeniach. Powiedziałbym, że z reguły im szerzej używany jest język, tym bardziej znane są luki, wyłącznie jako funkcja kontroli, czyli użycie / nagroda za wykorzystanie. Nie mówię, że Python jest gorszy od innych języków z punktu widzenia bezpieczeństwa, ale nie jest też lepszy. Jedyną prawdziwą odpowiedzią jest programowanie defensywne i dogłębne zabezpieczenie.
Podstawowy
29

W maju 2010 roku Word of God ogłosił, że wydania poprawek dla Pythona 2.7 będą prawdopodobnie wydawane przez co najmniej 6 lat .

Więc może 2016 rok, prawdopodobnie później.

Edycja: przesunięto do 2020 r. Zobacz wersję PEP 373, do której link znajduje się w innych odpowiedziach.

Frédéric Hamidi
źródło
2
Dla każdego, kto znajdzie tę odpowiedź w przyszłości, jak ogłosił sam BDFL na PyCon 2014, konserwacja wersji 2.7 zostaje teraz przedłużona do 2020 roku.
Silas Ray
15

powinieneś przeczytać to uważnie (ref: https://news.ycombinator.com/item?id=7582300 ):

Jest tu wiele komentarzy od ludzi, których nie ma na liście python-dev i tak naprawdę nie rozumieją, co właściwie oznacza ta różnica. Główni programiści nie są zobowiązani do utrzymywania 2,7 po 2015 roku, a większość z nich nie będzie w to zaangażowana. Ta część się nie zmieniła. Dzieje się tak, że Red Hat przygotowuje się do wycięcia wydania RHEL 7, które AFAIK w zależności od tego, ile zapłacisz im, oni obsługują przez 13 lat. Będą więc musieli wymyślić, jak samodzielnie wspierać 2.7 przynajmniej do 2027 roku. Tutaj czytam między wierszami. RH ma pełne prawo do rozwidlenia Pythona i zachowania poprawek konserwacyjnych dla siebie i swoich klientów (Python nie jest objęty licencją typu copyleft). Ale, są fajnymi facetami, więc może są skłonni do upstreamingu swoich zmian przynajmniej przez jakiś czas, jeśli nadal istnieje projekt Pythona, który chce je zaakceptować. Ponownie, to jest moja spekulacja oparta na dyskusji ML, a nie to, co RH powiedział, że zrobią. Można dokonać analogii do Rails LTS, komercyjnego rozwidlenia Rails 2.x, w którym patio11 było zaangażowane [0]. Nieuchronnie ktoś wkroczy w obsługę wersji 2.7, więc zobaczmy, co możemy zrobić, aby uniknąć sytuacji, w której jedynym sposobem na kontynuowanie działania 2.7 jest subskrybowanie RHEL. W międzyczasie jest kilka dużych firm, które intensywnie używają wersji 2.7 w systemie Windows (np. Enthought, Anaconda) i uważa się, że można znaleźć kogoś, kto stworzył instalator Windows od czasu do czasu, zakładając, że Python.org nadal będzie hostować pobieranie. Więc tak naprawdę to, co się tutaj dzieje, nie jest zbyt ekscytujące. Główni inicjatorzy nie robią nic innego niż opuszczenie projektu zgodnie z pierwotnym planem. To, co się dzieje, to pozostawienie włączonych świateł w repozytorium kontroli źródła i na serwerze FTP, aby uchwycić darmową siłę roboczą ludzi w dużych firmach, którzy są zainteresowani kontynuowaniem obsługi wersji 2.7. Alternatywą jest to, że RH i inni dostawcy tworzą zastrzeżone i drogie rozwidlenia Pythona 2.7. To może i tak się wydarzyć, ale Twój pracodawca zauważy, że powinieneś przestać dostarczać swoje poprawki, jeśli pliki binarne nadal pojawiają się na python.org i nie musisz prosić IT o skonfigurowanie SCM i narzędzia do śledzenia błędów, itp. To, co się dzieje, to pozostawienie włączonych świateł w repozytorium kontroli źródła i na serwerze FTP, aby uchwycić darmową siłę roboczą ludzi w dużych firmach, którzy są zainteresowani kontynuowaniem obsługi wersji 2.7. Alternatywą jest to, że RH i inni dostawcy tworzą zastrzeżone i drogie rozwidlenia Pythona 2.7. To może i tak się wydarzyć, ale Twój pracodawca zauważy, że powinieneś przestać dostarczać swoje poprawki, jeśli pliki binarne nadal pojawiają się na python.org i nie musisz prosić IT o skonfigurowanie SCM i narzędzia do śledzenia błędów, itp. To, co się dzieje, to pozostawienie włączonych świateł w repozytorium kontroli źródła i na serwerze FTP, aby uchwycić darmową siłę roboczą ludzi w dużych firmach, którzy są zainteresowani kontynuowaniem obsługi wersji 2.7. Alternatywą jest to, że RH i inni dostawcy tworzą zastrzeżone i drogie rozwidlenia Pythona 2.7. To może i tak się wydarzyć, ale Twój pracodawca zauważy, że powinieneś przestać dostarczać swoje poprawki, jeśli pliki binarne nadal pojawiają się na python.org i nie musisz prosić IT o skonfigurowanie SCM i narzędzia do śledzenia błędów, itp.

Navid Rahimi
źródło
10

W tym artykule czytamy: „Po wydaniu wersji 2.7 linia 2.x przejdzie na pięć lat w trybie tylko do usuwania błędów”.

Tak więc, o ile widzę, Python 2.7 był ostatnim wydaniem dodającym funkcje 2.x. i chociaż znalezione błędy zostaną naprawione (przez jakiś czas), nowe funkcje będą dostępne tylko w wersjach 3.x.

Arseny
źródło
3
Ten artykuł twierdzi również, że Python 3 wprowadza Unicode, więc cokolwiek on mówi, podchodziłbym z przymrużeniem oka. Ale zmień „pięć lat” na „co najmniej pięć lat” i to się zgadza.
Lennart Regebro
7

Jest też dość złowieszczy zegar odliczający do EOS w 2020 roku.

npit
źródło
6

PEP 373 (harmonogram wydań Pythona 2.7) jest oficjalnym źródłem informacji, o które prosiłeś.

Obecnie jest na nim napis „Planowane przyszłe daty wydania:”

  • 2.7.7 maj 2014
  • 2.7.8 listopad 2014
  • 2.7.9 Maj 2015
  • po tej dacie, w razie potrzeby wydania

Mówi też „Data końca życia (EOL, data wygaśnięcia) dla Pythona 2.7 została przesunięta o pięć lat w przyszłość, do 2020 r.”

Wydano w kwietniu 2014 r., Zgodnie z http://hg.python.org/peps/rev/76d43e52d978

Dr Jan-Philip Gehrcke
źródło
co za ulga! miejmy nadzieję, że Python 3 będzie już martwy lub zostanie zmieniony na coś w rodzaju morella, aby powstrzymać zamieszanie.
lowtech
2
@lowtech - Być może do tego czasu przeszli do Pythona 4 (prawdopodobnie wprowadzając nowe, niekompatybilne wstecz zmiany), ale nie spodziewam się, że 3 wymarło. Biorąc pod uwagę to, jak szybko 3 zyskiwały na popularności w ciągu ostatnich kilku lat, spodziewam się, że społeczność będzie miała więcej osób korzystających z 3 niż 2 do 2020 r. Nadal trzymam się Pythona 2, chociaż… za mało przekonujących zmian do wprowadzenia ryzyko przeskoczenia do 3. Jednak dużo importuję z przyszłości .
ArtOfWarfare
6

Podręcznik programisty języka Python zawiera listę „ Status gałęzi języka Python ” od wersji 2.6 do wersji bieżącej, w tym ich aktualny stan wsparcia wraz z datami wycofania z eksploatacji.

Obecnie obsługiwane (błędy + poprawki bezpieczeństwa):

  • Python 3.8 (aktualna gałąź główna / rozwojowa)
  • Python 3.7.0
  • Python 3.6.0
  • Python 2.7 (do 2020-01-01)

Tylko poprawki bezpieczeństwa:

  • Python 3.5
  • Python 3.4.0
chrki
źródło
1

Python 2.7 będzie zawsze dostępny. Jest zbyt wiele starego kodu, który go używa, i nikt nie chce go przerabiać. Jest już widelec o nazwie Tauthon, ale możemy zobaczyć innych, jeśli ten bezcelowy termin się spełni.

Maks
źródło
2
To nie jest „bezcelowe” dla produktów EOL, chodzi o alokację zasobów. Oczywiście, ponieważ jest to oprogramowanie typu open source, będzie dostępne na zawsze w obecnej formie. Ale nie będzie już obsługiwane . Przynajmniej przez oficjalnych opiekunów. Nie jestem pewien, na jakie pytanie tu odpowiadasz.
deceze
Użytkownik zapytał, jak długo będzie wsparcie dla Pythona2.7. Użytkownik nie pytał o wsparcie od oficjalnych opiekunów. W przypadku takiego projektu, z tak wieloma liniami kodu, w praktyce będą regularnie aktualizowane, backporty i dobre wsparcie dla Python2 na zawsze przez osoby, które nie są opiekunami. (Dałem się ponieść osobistej frustracji związanej z tym całym Pythonem3, stąd „bezcelowość”).
Max
Uważam, że ten komentarz jest istotny. Tauthon jest identyczny z Pythonem 2.7 i wygląda na to, że będzie obsługiwany przez jakiś czas. Warto więc o tym wspomnieć.
Phil
Doświadczyłem, że młodsi programiści nie rozumieją mocy i wydajności wynikającej z zagwarantowania wstecznej kompatybilności. Nigdy nie zrozumiem decyzji Guide van Rossuma, by wyrządzić krzywdę ponad dziesiątkom tysięcy godzin zmarnowanego życia, celowo łamiąc kompatybilność bez żadnych korzyści (ani wydajności, ani czytelności).
Maksymalnie
1
@Tetragrammaton: Proszę wyjaśnić, dlaczego brak kompatybilności jest dobrą rzeczą. Proszę wyjaśnić, jaka byłaby „podstawowa wada”. Pracuję z Pythonem na pełny etat od ponad 15 lat i nie widzę większej różnicy, która byłaby dla mnie istotna. C pozostał taki sam przez 40 lat i nadal jest głównym językiem i niewiele się zmienił. Javascript znacznie się poprawił na przestrzeni lat i nadal jest kompatybilny wstecz. C ++ jest nadal wstecznie kompatybilny z C. Windows 10 nadal może uruchamiać programy Windows 3. Nasze procesory nadal działają z kodem 8086 z lat 70. Robimy postępy każdego dnia, nie przerywając wsparcia.
Max