Programiranje

Python 2 EOL: Kako preživeti konec Pythona 2

Od 1. januarja 2020 njeni ustvarjalci, Python Software Foundation, ne podpirajo veje 2.x programskega jezika Python. Ta datum pomeni vrhunec drame, ki se že leta razteza - prehod s starejše, manj sposobne in pogosto uporabljene različice Pythona na novejšo, zmogljivejšo različico, ki še vedno sledi svojemu predhodniku.

Skrajni čas je. Python 3 z nešteto tehničnimi izboljšavami in izboljšavami za končne uporabnike nad Pythonom 2 še nikoli ni bil v boljšem položaju, da bi trajno izpodrinil Python 2. Velika večina priljubljenih paketov, ki jih gostuje v repozitoriju PyPI, ki je na prvem mestu za kodo Python za večkratno uporabo, podpira Python 3. Python 3 je postal privzeti tolmač Pythona za številne distribucije Linuxa. In večina vseh najnovejših knjig, akademije za kodiranje in spletnih vadnic priporoča Python 3 za začetnike.

Zdaj slabe novice. Python 2, tako kot Windows 7 (ali Windows XP!), Bo z nami še leta. Mnogi se bomo še naprej zanašali na aplikacije, napisane v Pythonu 2. Nekateri bomo zaradi notranjih omejitev še naprej uporabljali Python 2 za nove aplikacije. Kaj storiti, če ste z Pythonom 2 zataknjeni v svetu, ki hitro postaja Python 3? Poglejmo si možnosti.

Konec življenja Pythona 2: kaj to pomeni

Prva in najpomembnejša stvar, ki jo je treba razumeti glede Pythona 2, ki se začne EOL (konec življenjske dobe): Aplikacije Python 2 se bodo še vedno izvajale. Ne mislite na to kot na vprašanje o tisočletnih napakah, kjer se aplikacije Python 2 čarobno ustavijo 1. januarja 2020. Preprosto ne bo več uradna podpora za Python 2 iz osrednje ekipe za razvoj Pythona.

Evo, kaj Python 2 EOL pomeni v praksi:

  • Uradni popravki napak in varnostni popravki za Python 2 ne bodo več na voljo. Nobena odkrita težava v tolmaču Python 2 ali standardni knjižnici Python 2 ne bo odpravila jedrna razvojna skupina. Komercialni prodajalci pa bi lahko Python 2 vzdrževali sami, druge tretje osebe pa bi lahko razširile kodno bazo Python 2 in nadaljevale tam, kjer je jedro končalo. (Več o tem kasneje.)
  • Tuji projekti Python bodo opustili Python 2. Knjižnice, ki podpirajo Python 2 in Python 3, bodo svoje vire začele namenjati izključno Pythonu 3. Številni od teh projektov se izvajajo prostovoljno, veliko manj pa je dela, da bi podprli samo eno različico jezika. Vsak projekt se bo sam odločil za podporo Python 2, vendar se številni večji projekti Pythona zavezujejo, da bodo do leta 2020 v celoti opustili podporo Python 2.
  • Podpora platformi za Python 2 bo upadla. Distribucije Linuxa in ponudniki storitev v oblaku lahko še naprej vključujejo izvajanje Python 2. Toda pričakujte, da bo podpora za Python 2 sčasoma postala manj robustna. Skoraj zagotovo bo še vedno mogoče zagnati kontejnersko različico Pythona 2 na oblačni platformi, vendar ni nobenega zagotovila, da bodo ponudniki storitev v oblaku še naprej vzdrževali lastne vsebnike Python 2.

Če imate težave z aplikacijami Python 2, kako naj se spoprimete z odsotnostjo podpore za Python 2? Dolgoročno je najbolje najti strategijo za odstranitev vseh odvisnosti od Pythona 2. Toda to je le prva izmed mnogih možnosti.

Prehod iz Pythona 2

Zapustiti Python 2 za Python 3 je morda lažje, kot pričakujete, odvisno od velikosti osnove kode in zunanjih odvisnosti. Uradna dokumentacija Pythona vsebuje nekaj enostavnih korakov, s katerimi lahko ugotovite, ali je vaš projekt "odporen na prihodnost" - tj., Se lahko uporablja v Pythonu 3 z malo prilagoditve ali brez njih. Eden najboljših prvih korakov, ki ga lahko naredite, je uporabacaniusepython3 paket, da ugotovite, katere komponente ali odvisnosti bi, če sploh, blokirajo selitev.

Če ste obtičali s Pythonom 2, ker določena komponenta aplikacije deluje samo na Pythonu 2, začnite s prehodom stran od te komponente. Preverite, ali obstaja alternativa, ki je združljiva s Python 3, in nato znova sestavite aplikacijo od te točke navzven. Ideja je poiskati najmanjša mesta, kjer ležijo odvisnosti od Pythona 2, in jih odpraviti.

Thenajmanj kar lahko storite, če morate v neki obliki ostati na Pythonu 2, je, da začnete s selitvijo na najnovejšo različico Pythona 2 - Python 2.7.16 od tega pisanja - in to uporabite kot izhodišče za Python 3. Na ta način koristili boste popravke napak, ki bodo na voljo za Python 2.7 pred uradnim koncem življenjske dobe.

Uporabite nadomestno izvajanje Python 2

Če spreminjanje osnove kode Python 2 ni izvedljiv predlog, je druga možnost uporaba drugačnega izvajalnega okolja Python 2, ki ga je razvila tretja oseba. Alternativni izvajalni programi Python 2 imajo lahko daljše okno za podporo kot Python 2 sam.

Tavton

Tauthon je vilica Pythona 2.7.18 "z novo sintakso, vgrajenimi in knjižnicami, ki so podprte s Python 3.x", v skladu s projektom README. Tauthon vključuje tudi popravke in popravke jezika, kadar koli jim jih lahko zagotovijo vzdrževalci. Teoretično bi moral Tauthon delovati kot nadomestni Python 2.7. Najnovejša izdaja tega pisanja, Tauthon 2.8.2, vključuje pripise funkcij, argumente samo za ključne besede, async / await sintaksa in druge funkcije, ki so bile prej na voljo samo v Pythonu 3.

PyPy

PyPy, pravočasno pospešeno izvajanje za Python, uporablja Python 2 kot ključni del lastne notranje infrastrukture in že dolgo podpira Python 2 kot svojo glavno različico. Dokumentacija za projekt trdi, "ker je RPython [temelj PyPy] zgrajen na Pythonu 2 in je zelo verjetno, da se bo spremenil, različica PyPy Python 2 bo obstajala" za vedno ", torej dokler bo PyPy sam okoli. " PyPy lahko predstavlja težave z združljivostjo ali zmogljivostjo nekaterih paketov Python, ki se opirajo na razširitve C, čeprav PyPyjeva razvojna skupina nenehno dela na odpravi teh težav.

IronPython

IronPython, izvedba Pythona za izvajalno okolje .Net, ima različico Python 2 še vedno aktivno podprto. Njegov trenutni seznam razvijalcev je izjavil, da verjetno ne bo podpiral Pythona 2 po letu 2020, bolje se bo osredotočil na IronPython3. Vendar to ne pomeni, da nekdo drug takšne podpore ne bi mogel nadaljevati sam.

Cython

Druga možnost, čeprav z omejenim oknom podpore, je Cython. Cython prevaja Python v C z neobveznim tipkanjem za izboljšanje zmogljivosti in podpira Python 2 od njegove ustanovitve. Možno je uporabiti Cython za pretvorbo kode Python 2 v C za nadaljnjo uporabo kot "zamrznjen" binarni zapis. S tem lahko celo povečate zmogljivost, odvisno od narave aplikacije. (Programi, ki so večinoma vezani na V / I, ne bodo bistveno izboljšani.)

Vendar namerava Cython do konca leta opustiti podporo za Python 2. To ne pomeni, da se programi Python 2 ne bodo več prevajali v Cython, le da bi bilo treba prevesti kodo Cython z uporabo sintakse Python 2 z uporabo Pythona 3

Kupite razširjeno podporo za Python 2 pri prodajalcu

Ena dolgoročnih rešitev je pridobiti podporo pri prodajalcu rešitev Python. ActiveState, ustvarjalec distribucije ActivePython in IDE-ja Komodo, ponuja komercialno podporo strankam, ki želijo ostati s Pythonom 2 ali ki se želijo preseliti na Python 3, tako da identificirajo dele svojega sklada Python, ki jih je treba znova napisati v Python 3.

Nekateri ponudniki podpirajo Python 2 kot del njegove prisotnosti v drugem podprtem izdelku. Red Hat Enterprise Linux različici 6 in 7 vključuje Python 2, zato bodo vse pogodbe o podpori, kupljene pri Red Hat za te različice OS, vključevale stalno podporo za Python 2 skozi življenjsko dobo izdelka.

Če uporabljate Python 2 prek storitve v oblaku, obstaja možnost, da bo storitev še naprej podpirala Python 2 na svoj način. AWS je na primer izjavil, da bo zagotovil varnostne popravke za svoje izvajanje Python 2.7 do 31. decembra 2020, čeprav to ne velja za nobene tretje pakete Python 2.7.

Tretja možnost je nakup podpore pri svetovalnem podjetju ali izvajalcu. Raven podpore, ki vam jo nudijo, bi se razlikovala glede na vaše potrebe in ambicije. Lahko je sestavljen iz priprave načrta prehoda za odmik od Pythona 2 in predelave katere koli odvisne programske opreme (verjetno najboljše dolgoročne strategije) ali ročnega združevanja popravkov za Python 2 v gradnjo po meri (ambiciozno in zapleteno) ).

Vzdrževajte Python 2 sami

Python je odprtokodni projekt. Nič vam ne preprečuje, da sami ne bi uvedli potrebnih popravkov. Če je popravek sprememba standardne knjižnice Pythona, to običajno ni preveč težko, saj je večina standardne knjižnice Python sama napisana v Pythonu. Če pa morate spremeniti modul C, ki ga Python uporablja v standardni knjižnici, ali tolmač CPython, bi bilo to bolj zahtevno. Za to boste morali poznati C in poznati notranjost CPythona.

Delati nič

Če se ni pokvaril, ga ne popravljajte. To je strategija, ki so jo številna podjetja uporabljala z operacijskim sistemom Windows NT in Windows 2000, ko so ti operacijski sistemi prenehali delovati. Aplikacije Python, ki so samo za interno uporabo in niso izpostavljene javnemu internetu, bi teoretično lahko delovale za nedoločen čas.

Navidezni stroji in zabojniki zagotavljajo načine za ohranjanje tovrstnih aplikacij v nadzorovanem okolju. Dano izdajo izvajalnega okolja Python 2 lahko "zamrznete" v sliko vsebnika ali VM, skupaj s standardno knjižnico, moduli, potrebnimi za vašo aplikacijo, in samo aplikacijo.

Kljub temu bi bilo treba vsako staro aplikacijo, tudi tisto, ki nima zunanje izpostavljenosti, redno ponovno ocenjevati. V vsakem primeru je najboljša dolgoročna strategija za uporabnike Pythona 2, da se preselijo na Python 3. Python 2, tako velik kot je bil, je nekaj, kar je treba premakniti mimo.

Preberite več o Pythonu

  • Kaj je Python? Zmogljivo, intuitivno programiranje
  • Kaj je PyPy? Hitrejši Python brez bolečin
  • Kaj je Cython? Python s hitrostjo C.
  • Vadnica za Cython: Kako pospešiti Python
  • Kako namestiti Python na pameten način
  • Najboljše novosti v Pythonu 3.8
  • Boljše upravljanje Python projektov s Poetry
  • Virtualenv in venv: Razložena navidezna okolja Python
  • Python virtualenv in venv dela in ne sme
  • Razloženi navoji Python in podprocesi
  • Kako uporabljati razhroščevalnik Python
  • Kako uporabiti timeit za profiliranje kode Python
  • Kako uporabiti cProfile za profiliranje kode Python
  • Začnite z async v Pythonu
  • Kako uporabljati asyncio v Pythonu
  • Kako pretvoriti Python v JavaScript (in nazaj)
  • Python 2 EOL: Kako preživeti konec Pythona 2
  • 12 Pythonov za vsako programsko potrebo
  • 24 Python knjižnic za vsakega razvijalca Pythona
  • 7 sladkih ID-jev Python, ki ste jih morda zamudili
  • 3 glavne pomanjkljivosti Pythona - in njihove rešitve
  • 13 primerjanih spletnih okvirov Python
  • 4 Python testni okviri za zmečkanje napak
  • 6 odličnih novih funkcij Pythona, ki jih ne želite zamuditi
  • 5 distribucij Pythona za obvladovanje strojnega učenja
  • 8 odličnih Pythonovih knjižnic za obdelavo naravnega jezika
$config[zx-auto] not found$config[zx-overlay] not found