Programmering

Python 2 EOL: Hvordan overleve slutten av Python 2

Fra 1. januar 2020 støttes ikke lenger 2.x-grenen av Python-programmeringsspråket av skaperne, Python Software Foundation. Denne datoen markerer kulminasjonen av et drama som har strukket seg ut i årevis - overgangen fra en eldre, mindre dyktig, mye brukt versjon av Python til en nyere, kraftigere versjon som fremdeles følger forgjengeren i adopsjon.

Det er på høy tid. Python 3, med utallige tekniske forbedringer og sluttbrukerforbedringer i forhold til Python 2, har aldri vært i en bedre posisjon for å permanent fortrenge Python 2. De aller fleste populære pakker som er vert i PyPI-depotet, den første stoppbutikken for gjenbrukbar Python-kode, støtte Python 3. Python 3 har blitt standard Python-tolk for mange Linux-distribusjoner. Og de fleste nye bøker, kodingsakademier og onlineopplæring anbefaler Python 3 for nybegynnere.

Nå de dårlige nyhetene. Python 2, som Windows 7 (eller Windows XP!), Vil være med oss ​​i årene som kommer. Mange av oss vil fortsette å stole på apper skrevet i Python 2. Noen av oss vil til og med fortsette å bruke Python 2 til nye apper på grunn av interne begrensninger. Hva bør du gjøre hvis du sitter fast med Python 2 i det som raskt blir en Python 3-verden? La oss se på alternativene.

Python 2 end of life: Hva det betyr

Den første og viktigste tingen å forstå om Python 2 går EOL (livets slutt): Python 2-applikasjoner vil fortsatt kjøre. Ikke tenk på dette som en Millennium Bug-utgave, der Python 2-applikasjoner alle magisk stopper 1. januar 2020. Det vil bare ikke være mer offisiell støtte for Python 2 fra kjernen til Python-utviklingsteamet.

Her er hva Python 2 EOL betyr i praksis:

  • Offisielle feilrettinger og sikkerhetsoppdateringer for Python 2 opphører. Ingen nylig oppdagede problemer i Python 2-tolken eller Python 2-standardbiblioteket vil bli løst av kjerneutviklingsteamet. Imidlertid kunne kommersielle leverandører opprettholde Python 2 alene, og andre tredjeparter kunne forkaste Python 2-kodebasen og fortsette der kjerneteamet slapp. (Mer om dette senere.)
  • Tredjeparts Python-prosjekter vil forlate Python 2. Biblioteker som har støttet både Python 2 og Python 3, vil begynne å bruke ressursene sine på Python 3 eksklusivt. Mange av disse prosjektene er frivillige, og det er langt mindre arbeid å støtte bare en versjon av språket. Hvert prosjekt vil bestemme Python 2-støtte for seg selv, men mange store Python-prosjekter forplikter seg til å droppe Python 2-støtte helt innen 2020.
  • Plattformstøtte for Python 2 vil avta. Linux-distribusjoner og skytjenesteleverandører kan fortsette å inkludere Python 2-kjøretiden. Men forvent at støtte for Python 2 blir mindre robust over tid. Det vil nesten helt sikkert fortsatt være mulig å kjøre en containerisert versjon av Python 2 på en skyplattform, men det er ingen garanti for at skytjenesteleverandører vil fortsette å vedlikeholde sine egne Python 2-containere.

Hvis du sitter fast med Python 2-applikasjoner, hvordan skal du håndtere fraværet av Python 2-støtte? Det beste du kan gjøre på lang sikt er å finne en strategi for å fjerne alle dine avhengigheter av Python 2. Men det er bare den første av mange alternativer.

Overgang vekk fra Python 2

Å legge igjen Python 2 for Python 3 kan være enklere enn du forventer, avhengig av størrelsen på kodebasen og de eksterne avhengighetene. Pythons offisielle dokumentasjon har noen enkle grep du kan ta for å avgjøre om prosjektet ditt er "fremtidssikkert" - dvs. kan brukes i Python 3 med liten eller ingen justering. Et av de beste første trinnene du kan ta er å brukecaniusepython3 pakke for å finne ut hvilke, hvis noen, komponenter eller avhengigheter som vil blokkere en migrering.

Hvis du sitter fast med Python 2 fordi en bestemt komponent i et program bare fungerer på Python 2, begynn med å gå over fra den komponenten. Se om det finnes et alternativ som er kompatibelt med Python 3, og bygg deretter applikasjonen på nytt fra det punktet og utover. Tanken er å se etter de minste stedene der man er avhengig av Python 2, og adressere dem.

DeI det minste du kan gjøre, hvis du må være på Python 2 i en eller annen form, begynner du med å migrere til den siste versjonen av Python 2 — Python 2.7.16 når dette skrives — og bruke det som utgangspunkt for Python 3. På den måten du vil dra nytte av feilrettingen som vil være tilgjengelig for Python 2.7 før den offisielle utgangen av livet.

Bruk en alternativ Python 2 kjøretid

Hvis endring av Python 2-kodebasen ikke er et praktisk forslag, er et annet alternativ å bruke en annen Python 2-kjøretid, utviklet av en tredjepart. Alternative driftstider for Python 2 kan ha et lengre støttevindu enn Python 2 selv.

Tauthon

Tauthon er en gaffel av Python 2.7.18 "med ny syntaks, innebygde program og biblioteker backported fra Python 3.x," ifølge prosjektets README. Tauthon inkluderer også, når vedlikeholdere kan tilby dem, rettelser og oppdateringer for språket. I teorien bør Tauthon fungere som drop-in erstatning for Python 2.7. Den siste utgivelsen i skrivende stund, Tauthon 2.8.2, inkluderer funksjonsanmerkninger, bare søkeordargumenter, asynkronisere / vente syntaks og andre funksjoner som tidligere bare var tilgjengelige i Python 3.

PyPy

PyPy, just-in-time akselerert kjøretid for Python, bruker Python 2 som en sentral del av sin egen interne infrastruktur, og har lenge støttet Python 2 som hovedversjon. Dokumentasjonen for prosjektet hevder “siden RPython [grunnlaget for PyPy] er bygget på toppen av Python 2, og det er ekstremt lite sannsynlig å endre seg, vil Python 2-versjonen av PyPy være 'for alltid', dvs. så lenge PyPy selv er rundt." PyPy kan utgjøre kompatibilitets- eller ytelsesproblemer med noen Python-pakker som er avhengige av C-utvidelser, selv om PyPys utviklingsteam jobber kontinuerlig med å stryke ut disse problemene.

IronPython

IronPython, en Python-implementering for .Net-kjøretiden, har en Python 2-versjon som fortsatt mottar aktiv støtte. Den nåværende listen over utviklere har erklært at de sannsynligvis ikke støtter Python 2 siste 2020, desto bedre er det å konsentrere seg om IronPython3. Det betyr imidlertid ikke at noen andre ikke kunne fortsette slik støtte alene.

Cython

En annen mulighet er Cython, men med et begrenset vindu for støtte også. Cython kompilerer Python til C med valgfri skriving for ytelsesforbedringer og har støttet Python 2 siden oppstarten. Det er mulig å bruke Cython til å konvertere Python 2-kode til C for fortsatt bruk som en "frossen" binær. Du kan til og med få et ytelsesløft ved å gjøre det, avhengig av applikasjonens art. (Programmer som hovedsakelig er I / O-bundet vil ikke se mye forbedring.)

Imidlertid planlegger Cython å slippe Python 2-støtte innen utgangen av året. Dette betyr ikke at Python 2-programmer ikke vil kompilere til Cython lenger, bare at Cython-kode som bruker Python 2-syntaks, må kompileres bruker Python 3

Kjøp utvidet Python 2-støtte fra en leverandør

En langsiktig løsning er å skaffe støtte fra en leverandør av Python-løsninger. ActiveState, skaper av ActivePython-distribusjonen og Komodo IDE, tilbyr kommersiell støtte for kunder som vil bo hos Python 2, eller som vil migrere til Python 3 ved å identifisere delene av Python-stakken som må skrives om i Python 3.

Noen leverandører gir støtte for Python 2 som en del av tilstedeværelsen i et annet støttet produkt. Red Hat Enterprise Linux versjoner 6 og 7 inkluderer Python 2, så eventuelle supportkontrakter som er kjøpt fra Red Hat for de versjonene av operativsystemet vil inkludere fortsatt støtte for Python 2 gjennom produktets levetid.

Hvis du bruker Python 2 ved hjelp av en skytjeneste, er det en sjanse for at tjenesten vil fortsette å støtte Python 2 på sin egen måte. AWS har for eksempel uttalt at de vil gi sikkerhetsoppdateringer for Python 2.7-kjøretiden til 31. desember 2020, selv om dette ikke gjelder noen tredjeparts Python 2.7-pakker.

Et tredje alternativ er å kjøpe støtte fra et konsulentfirma eller entreprenør. Støttenivået de gir deg vil variere avhengig av dine behov og ambisjoner. Det kan bestå av å komme opp med en overgangsplan for å bevege seg bort fra Python 2 og omskrive hvilken som helst avhengig programvare (sannsynligvis den beste langsiktige strategien), eller manuelt slå sammen oppdateringer for Python 2 til en tilpasset konstruksjon av kjøretiden (ambisiøs og kompleks ).

Vedlikehold Python 2 selv

Python er et open source-prosjekt. Det er ingenting som hindrer deg i å implementere nødvendige løsninger selv. Hvis løsningen er en endring i Pythons standardbibliotek, er det vanligvis ikke så vanskelig, ettersom det meste av Python-standardbiblioteket selv er skrevet i Python. Men hvis du trenger å gjøre endringer i en C-modul som brukes av Python i standardbiblioteket, eller CPython-tolk, vil det være mer utfordrende. Du må kjenne C og være kjent med CPythons interner for å oppnå dette.

Gjør ingenting

Hvis det ikke er ødelagt, må du ikke fikse det. Det er strategien mange bedrifter brukte med Windows NT og Windows 2000 da operativsystemene ble utgått. Python-applikasjoner som kun er til internt bruk og som ikke er utsatt for det offentlige Internett, kan i teorien kjøres på ubestemt tid.

Virtuelle maskiner og containerisering gir måter å holde slike applikasjoner levende og godt i et kontrollert miljø. Du kan "fryse" en gitt utgave av Python 2-kjøretiden i et containerbilde eller en VM, sammen med standardbiblioteket, modulene som trengs for appen din og selve applikasjonen.

Når det er sagt, bør enhver eldre app, til og med en som ikke har noen ekstern eksponering, vurderes regelmessig. I alle tilfeller er den beste langsiktige strategien for Python 2-brukere å migrere til Python 3. Python 2, så stor som den har vært, er noe å bevege seg forbi.

Les mer om Python

  • Hva er Python? Kraftig, intuitiv programmering
  • Hva er PyPy? Raskere Python uten smerter
  • Hva er Cython? Python med hastigheten på C
  • Cython tutorial: Hvordan øke hastigheten på Python
  • Slik installerer du Python på den smarte måten
  • De beste nye funksjonene i Python 3.8
  • Bedre Python-prosjektledelse med poesi
  • Virtualenv og venv: Python virtuelle miljøer forklart
  • Python virtualenv og venv do’s and don'ts
  • Python-tråder og underprosesser forklart
  • Hvordan bruke Python-feilsøkingsprogrammet
  • Hvordan bruke timeit til å profilere Python-kode
  • Hvordan bruke cProfile for å profilere Python-kode
  • Kom i gang med asynkronisering i Python
  • Hvordan bruke asyncio i Python
  • Slik konverterer du Python til JavaScript (og tilbake igjen)
  • Python 2 EOL: Hvordan overleve slutten av Python 2
  • 12 pytoner for ethvert programmeringsbehov
  • 24 Python-biblioteker for alle Python-utviklere
  • 7 søte Python IDEer du kanskje har savnet
  • 3 store Python-mangler - og deres løsninger
  • 13 Python-nettrammer sammenlignet
  • 4 Python-testrammer for å knuse feilene dine
  • 6 flotte nye Python-funksjoner du ikke vil gå glipp av
  • 5 Python-distribusjoner for å mestre maskinlæring
  • 8 flotte Python-biblioteker for naturlig språkbehandling
$config[zx-auto] not found$config[zx-overlay] not found