Programmering

Python 2 EOL: Sådan overlever du slutningen af ​​Python 2

Fra 1. januar 2020 understøttes 2.x-grenen af ​​Python-programmeringssproget ikke længere af dets skabere, Python Software Foundation. Denne dato markerer kulminationen på et drama, der har strakt sig i årevis - overgangen fra en ældre, mindre kapabel, udbredt version af Python til en nyere og mere kraftfuld version, der stadig følger sin forgænger ved vedtagelse.

Det er på høje tid. Python 3, med utallige tekniske forbedringer og slutbrugerforbedringer i forhold til Python 2, har aldrig været i en bedre position til permanent at fortrænge Python 2. Langt de fleste populære pakker, der er hostet i PyPI-arkivet, det første stop for genanvendelig Python-kode, support Python 3. Python 3 er blevet standard Python-tolk for mange Linux-distributioner. Og mest hver nyere bog, kodningsakademi og online tutorial anbefaler Python 3 til begyndere.

Nu de dårlige nyheder. Python 2 vil ligesom Windows 7 (eller Windows XP!) Være med os i de kommende år. Mange af os vil fortsat stole på apps skrevet i Python 2. Nogle af os vil endda fortsætte med at bruge Python 2 til nye apps på grund af interne begrænsninger. Hvad skal du gøre, hvis du sidder fast med Python 2 i, hvad der hurtigt bliver en Python 3-verden? Lad os se på mulighederne.

Python 2 slutning af livet: Hvad det betyder

Den første og vigtigste ting at forstå om Python 2 går EOL (livets slutning): Python 2-applikationer kører stadig. Tænk ikke på dette som et Millennium Bug-problem, hvor Python 2-applikationer alle magisk stopper den 1. januar 2020. Der vil bare ikke være mere officiel støtte til Python 2 fra det centrale Python-udviklingsteam.

Her er hvad Python 2 EOL betyder praktisk:

  • Officielle fejlrettelser og sikkerhedsrettelser til Python 2 ophører. Ingen nyopdagede problemer i Python 2-tolken eller Python 2-standardbiblioteket vil blive løst af kerneudviklingsteamet. Imidlertid kunne kommercielle leverandører vedligeholde Python 2 alene, og andre tredjeparter kunne forkaste Python 2-kodebasen og fortsætte, hvor kerneteamet slap. (Mere om dette senere.)
  • Tredjeparts Python-projekter vil opgive Python 2. Biblioteker, der har understøttet både Python 2 og Python 3, begynder udelukkende at afsætte deres ressourcer til Python 3. Mange af disse projekter er frivillige, og det er langt mindre arbejde at understøtte kun en version af sproget. Hvert projekt vil beslutte, om Python 2-support til sig selv, men mange større Python-projekter lover at droppe Python 2-support helt inden 2020.
  • Platformsstøtte til Python 2 aftager. Linux-distributioner og cloud-tjenesteudbydere kan fortsætte med at inkludere Python 2-runtime. Men forvent, at support til Python 2 bliver mindre robust over tid. Det vil næsten helt sikkert stadig være muligt at køre en containeriseret version af Python 2 på en cloudplatform, men der er ingen garanti for, at cloudtjenesteudbydere fortsat vil vedligeholde deres egne Python 2-containere.

Hvis du sidder fast med Python 2-applikationer, hvordan skal du håndtere fraværet af Python 2-support? Den bedste ting at gøre på lang sigt er at finde en strategi til at fjerne alle dine afhængigheder af Python 2. Men det er bare den første af mange muligheder.

Overgang væk fra Python 2

At efterlade Python 2 til Python 3 kan være lettere, end du forventer, afhængigt af størrelsen på kodebasen og de eksterne afhængigheder. Pythons officielle dokumentation har nogle enkle trin, du kan tage for at afgøre, om dit projekt er "fremtidssikkert" - dvs. kan bruges i Python 3 med ringe eller ingen justering. Et af de bedste første skridt, du kan tage, er at brugecaniusepython3 pakke til at finde ud af, hvilke, hvis nogen, komponenter eller afhængigheder, der blokerer en migration.

Hvis du sidder fast med Python 2, fordi en bestemt komponent i en applikation kun fungerer på Python 2, skal du starte med at gå væk fra den pågældende komponent. Se om der findes et alternativ, der er kompatibelt med Python 3, og genopbyg derefter applikationen fra det punkt udad. Ideen er at lede efter de mindste steder, hvor ens afhængighed af Python 2 ligger, og adressere dem.

Deti det mindste du kan gøre, hvis du skal forblive på Python 2 i en eller anden form, skal du starte med at migrere til den nyeste version af Python 2 — Python 2.7.16 i skrivende stund — og bruge det som udgangspunkt for Python 3. På den måde du vil drage fordel af de fejlrettelser, der vil være tilgængelige for Python 2.7 inden dets officielle afslutning.

Brug en alternativ Python 2-runtime

Hvis ændring af Python 2-kodebasen ikke er et praktisk forslag, er et andet alternativ at bruge en anden Python 2-runtime, udviklet af en tredjepart. Alternative Python 2-driftstider kan have et længere supportvindue end Python 2 selv.

Tauthon

Tauthon er en gaffel af Python 2.7.18 "med ny syntaks, indbyggede og biblioteker backported fra Python 3.x," ifølge projektets README. Tauthon inkluderer også, når vedligeholdere kan levere dem, rettelser og programrettelser til sproget. I teorien skal Tauthon fungere som drop-in-erstatning for Python 2.7. Den seneste udgivelse i skrivende stund, Tauthon 2.8.2, inkluderer funktionsbemærkninger, kun søgeordsargumenter, asynkroniser / afventer syntaks og andre funktioner, der tidligere kun var tilgængelige i Python 3.

PyPy

PyPy, den just-in-time accelererede driftstid for Python, bruger Python 2 som en vigtig del af sin egen interne infrastruktur og har længe understøttet Python 2 som sin vigtigste version. Dokumentationen for projektet hævder “da RPython [fundamentet for PyPy] er bygget oven på Python 2, og det er yderst usandsynligt at ændre sig, vil Python 2-versionen af ​​PyPy være 'for evigt', dvs. så længe PyPy selv er rundt om." PyPy kan udgøre kompatibilitets- eller ydeevneproblemer med nogle Python-pakker, der er afhængige af C-udvidelser, selvom PyPys udviklingsteam konstant arbejder på at stryge disse problemer ud.

IronPython

IronPython, en Python-implementering til .Net-runtime, har en Python 2-version, der stadig modtager aktiv support. Dens nuværende liste over udviklere har erklæret, at de sandsynligvis ikke støtter Python 2 i løbet af 2020, jo bedre er det at koncentrere sig om IronPython3. Det betyder dog ikke, at en anden ikke kunne fortsætte sådan støtte alene.

Cython

En anden mulighed, selvom det også er med et begrænset vindue, er Cython. Cython kompilerer Python til C med valgfri indtastning til forbedring af ydeevne og har understøttet Python 2 siden starten. Det er muligt at bruge Cython til at konvertere Python 2-kode til C til fortsat brug som en "frossen" binær. Du kan endda få et præstationsforøg ved at gøre det afhængigt af applikationens art. (Programmer, der hovedsageligt er I / O-bundet, ser ikke meget forbedring.)

Imidlertid planlægger Cython at droppe Python 2-support inden udgangen af ​​året. Dette betyder ikke, at Python 2-programmer ikke længere kompileres til Cython, kun at Cython-kode, der bruger Python 2-syntaks, skal kompileres ved hjælp af Python 3

Køb udvidet Python 2 support fra en leverandør

En langsigtet løsning er at få support fra en leverandør af Python-løsninger. ActiveState, skaberen af ​​ActivePython-distributionen og Komodo IDE, tilbyder kommerciel support til kunder, der ønsker at blive hos Python 2, eller som vil migrere til Python 3 ved at identificere de dele af deres Python-stak, der skal omskrives i Python 3.

Nogle leverandører yder support til Python 2 som en del af dets tilstedeværelse i et andet understøttet produkt. Red Hat Enterprise Linux version 6 og 7 inkluderer Python 2, så alle supportkontrakter købt fra Red Hat til disse versioner af OS vil omfatte fortsat support til Python 2 gennem produktets supportlevetid.

Hvis du bruger Python 2 ved hjælp af en skytjeneste, er der en chance for, at tjenesten fortsætter med at understøtte Python 2 på sin egen måde. AWS har for eksempel erklæret, at de vil levere sikkerhedsrettelser til sin Python 2.7-runtime indtil 31. december 2020, selvom dette ikke gælder for nogen tredjeparts Python 2.7-pakker.

En tredje mulighed er at købe support fra et konsulentfirma eller en entreprenør. Supportniveauet, de giver dig, varierer afhængigt af dine behov og ambitioner. Det kunne bestå af at komme med en overgangsplan for at flytte væk fra Python 2 og få omskrevet afhængig software (sandsynligvis den bedste langsigtede strategi) eller manuelt flette patches til Python 2 til en brugerdefineret opbygning af runtime (ambitiøs og kompleks ).

Vedligehold Python 2 selv

Python er et open source-projekt. Der er intet, der forhindrer dig i at implementere de nødvendige rettelser selv. Hvis rettelsen er en ændring af Pythons standardbibliotek, er det typisk ikke for svært, da det meste af Python-standardbiblioteket selv er skrevet i Python. Men hvis du har brug for at foretage ændringer i et C-modul, der bruges af Python i standardbiblioteket eller CPython-tolken, ville det være mere udfordrende. Du bliver nødt til at kende C og være fortrolig med CPythons interne for at opnå dette.

Gøre ingenting

Hvis det ikke går i stykker, skal du ikke rette det. Det er den strategi, som mange virksomheder brugte med Windows NT og Windows 2000, da disse operativsystemer blev udtjente. Python-applikationer, der kun er til intern brug, og som ikke er udsat for det offentlige internet, kunne i teorien køres på ubestemt tid.

Virtuelle maskiner og containerisering giver måder at holde denne slags applikationer levende og godt i et kontrolleret miljø. Du kan "fryse" en given udgave af Python 2-runtime i et containerbillede eller en VM sammen med dets standardbibliotek, de moduler, der er nødvendige til din app og selve applikationen.

Når det er sagt, skal enhver ældre app, selv en, der ikke har nogen ekstern eksponering, revurderes regelmæssigt. I alle tilfælde er den bedste langsigtede strategi for Python 2-brugere at migrere til Python 3. Python 2, så stor som den har været, er noget at bevæge sig forbi.

Læs mere om Python

  • Hvad er Python? Kraftfuld, intuitiv programmering
  • Hvad er PyPy? Hurtigere Python uden smerter
  • Hvad er Cython? Python med C-hastighed
  • Cython tutorial: Sådan fremskyndes Python
  • Sådan installeres Python på den smarte måde
  • De bedste nye funktioner i Python 3.8
  • Bedre Python-projektstyring med Poetry
  • Virtualenv og venv: Python virtuelle miljøer forklaret
  • Python virtualenv og venv do's and don'ts
  • Python-gevind og underprocesser forklaret
  • Sådan bruges Python debugger
  • Sådan bruges timeit til at profilere Python-kode
  • Sådan bruges cProfile til profilering af Python-kode
  • Kom godt i gang med async i Python
  • Sådan bruges asyncio i Python
  • Sådan konverteres Python til JavaScript (og tilbage igen)
  • Python 2 EOL: Sådan overlever du slutningen af ​​Python 2
  • 12 pythoner til ethvert programmeringsbehov
  • 24 Python-biblioteker til alle Python-udviklere
  • 7 søde Python IDE'er, du måske har gået glip af
  • 3 store Python-mangler - og deres løsninger
  • 13 Python-webrammer sammenlignet
  • 4 Python testrammer til at knuse dine bugs
  • 6 fantastiske nye Python-funktioner, som du ikke vil gå glip af
  • 5 Python-distributioner til mastering af maskinlæring
  • 8 fantastiske Python-biblioteker til naturlig sprogbehandling