Programavimas

„Python 2“ EOL: kaip išgyventi „Python 2“ pabaigą

Nuo 2020 m. Sausio 1 d. „Python“ programavimo kalbos „2.x“ šaka nebepalaikoma jos kūrėjų - „Python Software Foundation“. Ši data žymi daugelį metų besitęsiančios dramos kulminaciją - perėjimą nuo senesnės, mažiau pajėgios, plačiai naudojamos „Python“ versijos prie naujesnės, galingesnės versijos, kuri vis dar atspindi pirmtaką.

Atėjo laikas. „Python 3“ su daugybe „Python 2“ techninių ir galutinių vartotojų patobulinimų niekada nebuvo geresnėje padėtyje visam laikui išstumti „Python 2“. Didžioji dauguma populiarių paketų, talpinamų „PyPI“ saugykloje, daugkartinio naudojimo „Python“ kodo pirmoje vietoje, palaikykite „Python 3.“. „Python 3“ tapo numatytuoju „Python“ vertėju daugeliui „Linux“ paskirstymų. Daugumoje naujausių knygų, kodavimo akademijos ir internetinių pamokų pradedantiesiems rekomenduojamas „Python 3“.

Dabar blogos naujienos. „Python 2“, kaip ir „Windows 7“ (arba „Windows XP“!), Bus su mumis ateinančius metus. Daugelis iš mūsų ir toliau remsis programomis, parašytomis „Python 2“. Kai kurie iš mūsų net ir toliau naudos „Python 2“ naujoms programoms dėl vidinių apribojimų. Ką turėtumėte daryti, jei esate įstrigę „Python 2“ pasaulyje, kuris greitai tampa „Python 3“ pasauliu? Pažvelkime į variantus.

„Python 2“ gyvenimo pabaiga: ką tai reiškia

Pirmasis ir svarbiausias dalykas, kurį reikia suprasti apie „Python 2“ einamą EOL (gyvenimo pabaiga): „Python 2“ programos vis tiek veiks. Nemanykite, kad tai yra „Millennium Bug“ leidimas, kai „Python 2“ programos visos stebuklingai sustoja 2020 m. Sausio 1 d. Daugiau jų tiesiog nebus. oficiali parama „Python 2“ iš pagrindinės „Python“ kūrimo komandos.

Štai ką praktiškai reiškia „Python 2 EOL“:

  • Oficialūs „Python 2“ klaidų taisymai ir saugos pataisos nebebus. Pagrindinės kūrėjų komanda neištaisys jokių naujai atrastų „Python 2“ vertėjo ar „Python 2“ standartinės bibliotekos problemų. Tačiau komerciniai pardavėjai galėtų savarankiškai prižiūrėti „Python 2“, o kitos trečiosios šalys galėtų išsijungti „Python 2“ kodų bazę ir tęsti ten, kur pagrindinė komanda liko. (Daugiau apie tai vėliau.)
  • Trečiųjų šalių „Python“ projektai atsisakys „Python 2“. Bibliotekos, palaikiusios tiek „Python 2“, tiek „Python 3“, savo išteklius pradės skirti tik „Python 3“. Daugelis šių projektų vykdomi savanorių, o palaikyti tik vieną kalbos versiją yra kur kas mažiau darbo. Kiekvienas projektas pats nuspręs dėl „Python 2“ palaikymo, tačiau daugelis pagrindinių „Python“ projektų įsipareigoja iki 2020 m. Visiškai atsisakyti „Python 2“ palaikymo.
  • „Python 2“ platformos palaikymas sumažės. „Linux“ paskirstymai ir debesijos paslaugų teikėjai gali ir toliau įtraukti „Python 2“ vykdymo laiką. Tačiau tikėkitės, kad „Python 2“ palaikymas laikui bėgant taps ne toks tvirtas. Beveik neabejotinai vis tiek bus įmanoma paleisti konteinerinę „Python 2“ versiją debesies platformoje, tačiau nėra jokios garantijos, kad debesijos paslaugų teikėjai ir toliau išlaikys savo „Python 2“ konteinerius.

Jei esate įstrigę „Python 2“ programose, kaip turėtumėte elgtis, jei nėra „Python 2“ palaikymo? Geriausias dalykas, kurį reikia padaryti per ilgą laiką, yra rasti strategiją, kaip pašalinti visas priklausomybes nuo „Python 2“. Tačiau tai tik pirmasis iš daugelio variantų.

Perėjimas nuo „Python 2“

Palikti „Python 2“ „Python 3“ gali būti lengviau nei tikėtasi, atsižvelgiant į kodo bazės dydį ir išorines priklausomybes. Oficialiuose „Python“ dokumentuose yra keletas nesudėtingų veiksmų, kuriuos galite atlikti norėdami nustatyti, ar jūsų projektas „atsparus ateičiai“, t. Y., Gali būti naudojamas „Python 3“, nedaug ar be jokių koregavimų. Vienas iš geriausių pirmųjų žingsnių, kurį galite atlikti, yra naudoticaniusepython3 paketą, kad išsiaiškintumėte, kurie komponentai ar priklausomybės blokuos migraciją, jei jų yra.

Jei esate užstrigęs „Python 2“, nes konkretus programos komponentas veikia tik „Python 2“, pirmiausia pereikite nuo šio komponento. Pažiūrėkite, ar yra alternatyva, suderinama su „Python 3“, ir tada atkurkite programą nuo to taško į išorę. Idėja yra ieškoti mažiausių vietų, kur yra priklausomybė nuo „Python 2“, ir jas spręsti.

mažiausiai galite padaryti, jei turite likti „Python 2“ tam tikra forma, pirmiausia pereikite prie naujausios „Python 2“ versijos - „Python 2.7.16“ šio rašymo metu - ir naudokite tai kaip „Python 3“ atspirties tašką. jums bus naudingi klaidų taisymai, kuriuos bus galima pasiekti „Python 2.7“ iki jo oficialaus gyvenimo pabaigos.

Naudokite alternatyvų „Python 2“ vykdymo laiką

Jei „Python 2“ kodo bazės keitimas nėra tinkamas pasiūlymas, kita alternatyva yra naudoti kitą „Python 2“ vykdymo laiką, kurį sukūrė trečioji šalis. Alternatyvūs „Python 2“ vykdymo laikas gali turėti ilgesnį palaikymo langą nei pats „Python 2“.

Tauthonas

„Tauthon“ yra „Python 2.7.18“ šakutė „su nauja sintakse, integruotaisiais elementais ir bibliotekomis, kurios yra išportuotos iš„ Python 3.x ““, rašoma projekto README. „Tauthon“ taip pat apima kalbos taisymus ir pleistrus, kai tik prižiūrėtojai gali juos pateikti. Teoriškai Tauthonas turėtų veikti kaip „Python 2.7“ pakaitalas. Naujausiame šio rašymo leidime „Tauthon 2.8.2“ yra funkcijų komentarai, argumentai tik su raktiniais žodžiais, nesinchronizuoti / laukti sintaksė ir kitos funkcijos, kurios anksčiau buvo prieinamos tik „Python 3“.

PyPy

„PyPy“, „Python“, kuris yra tiesiog pagreitintas „Python“ vykdymo laikas, naudoja „Python 2“ kaip pagrindinę savo vidinės infrastruktūros dalį ir jau seniai palaiko „Python 2“ kaip pagrindinę versiją. Projekto dokumentuose teigiama, kad „kadangi„ RPython “[„ PyPy “pagrindas] yra pastatytas ant„ Python 2 “ir tai mažai tikėtina, kad tai pasikeis,„ PyPy 2 “Python 2 versija bus„ amžinai “, ty tol, kol pati PyPy yra aplinkui “. „PyPy“ gali sukelti suderinamumo ar našumo problemų su kai kuriais „Python“ paketais, kurie remiasi „C“ plėtiniais, nors „PyPy“ kūrėjų komanda nuolat stengiasi ištaisyti šias problemas.

„IronPython“

„IronPython“, .Net vykdymo laiko „Python“ diegimas, turi „Python 2“ versiją, kuri vis dar gauna aktyvų palaikymą. Dabartinis kūrėjų sąrašas paskelbė, kad greičiausiai nepalaikys „Python 2“ praėjus 2020 m., Tuo geriau sutelkti dėmesį į „IronPython3“. Tačiau tai nereiškia, kad kažkas kitas negalėjo tęsti tokios paramos savarankiškai.

Cython

Kita galimybė, nors ir su ribotu palaikymo langu, yra „Cython“. „Cython“ kompiliuoja „Python“ į „C“, pasirinkdamas spausdinimo funkciją, kad būtų galima pagerinti našumą, ir nuo pat savo veiklos pradžios palaiko „Python 2“. „Cython“ galima konvertuoti „Python 2“ kodą į C tolesniam naudojimui kaip „užšaldytą“ dvejetainį. Tai atlikdami galite net padidinti našumą, priklausomai nuo programos pobūdžio. (Programos, kurios daugiausia susietos su įvestimi / išvestimi, nematys daug patobulinimų.)

Tačiau „Cython“ planuoja atsisakyti „Python 2“ palaikymo iki metų pabaigos. Tai nereiškia, kad „Python 2“ programos nebebus kompiliuojamos į „Cython“, tik reikės sukompiliuoti „Cython“ kodą naudojant „Python 2“ sintaksę naudojant „Python 3“

Pirkite išplėstą „Python 2“ palaikymą iš pardavėjo

Vienas ilgalaikių sprendimų yra gauti „Python“ sprendimų pardavėjo palaikymą. „ActiveState“, „ActivePython“ platinimo ir „Komodo IDE“ kūrėjas, siūlo komercinę paramą klientams, norintiems likti su „Python 2“ arba norintiems pereiti prie „Python 3“, nustatant jų „Python“ rietuvės dalis, kurios turi būti perrašytos „Python 3“.

Kai kurie pardavėjai palaiko „Python 2“ kaip dalį kitų palaikomų produktų. „Red Hat Enterprise Linux“ 6 ir 7 versijose yra „Python 2“, todėl visos palaikymo sutartys, įsigytos iš „Red Hat“ toms OS versijoms, apims tolesnį „Python 2“ palaikymą per visą produkto palaikymo laiką.

Jei naudojate „Python 2“ kaip debesies paslaugą, yra tikimybė, kad paslauga ir toliau palaikys „Python 2“ savaip. Pavyzdžiui, AWS pareiškė, kad iki 2020 m. Gruodžio 31 d. Pateiks „Python 2.7“ vykdymo laiko saugos pataisas, nors tai netaikoma jokiems trečiųjų šalių „Python 2.7“ paketams.

Trečias variantas - pirkti paramą iš konsultacinės firmos ar rangovo. Jų teikiamos paramos lygis gali skirtis priklausomai nuo jūsų poreikių ir ambicijų. Tai gali būti pereinamojo plano, kuriuo siekiama atsisakyti „Python 2“, parengimas ir bet kurios priklausomos programinės įrangos perrašymas (tikriausiai geriausia ilgalaikė strategija), arba „Python 2“ pataisų rankinis sujungimas į pasirinktinį vykdymo laiko pastatymą (ambicingas ir sudėtingas) ).

Palaikykite „Python 2“ patys

„Python“ yra atviro kodo projektas. Niekas netrukdo jums patiems įdiegti reikalingų taisymų. Jei taisymas yra „Python“ standartinės bibliotekos pakeitimas, paprastai tai nėra per sunku, nes didžioji dalis „Python“ standartinės bibliotekos pati yra parašyta „Python“. Bet jei jums reikia pakeisti C modulį, kurį naudoja „Python“ standartinėje bibliotekoje, arba „CPython“ vertėją, tai būtų sudėtingiau. Norėdami tai pasiekti, turėsite žinoti C ir būti susipažinę su „CPython“ vidiniais elementais.

Nieko nedaryk

Jei jis nėra sugedęs, netaisykite. Tai strategija, kurią daugelis įmonių naudojo kartu su „Windows NT“ ir „Windows 2000“, kai šios operacinės sistemos pasibaigė. „Python“ programos, skirtos tik vidiniam naudojimui ir kurioms neveikia viešasis internetas, teoriškai galėtų būti vykdomos neribotą laiką.

Virtualios mašinos ir talpyklos suteikia būdų, kaip išlaikyti šias programas gyvas ir gerai kontroliuojamoje aplinkoje. Nurodytą „Python 2“ vykdymo laiką galite „užšaldyti“ į sudėtinio rodinio vaizdą arba VM kartu su standartine biblioteka, programai reikalingais moduliais ir pačia programa.

Be to, bet kuri sena programa, net ir neturinti išorinio poveikio, turėtų būti reguliariai vertinama iš naujo. Bet kuriuo atveju geriausia ilgalaikė „Python 2“ vartotojų strategija yra perėjimas prie „Python 3“. „Python 2“, kad ir koks puikus, yra kažkas, nuo kurio reikia pereiti.

Skaitykite daugiau apie „Python“

  • Kas yra „Python“? Galingas, intuityvus programavimas
  • Kas yra PyPy? Greitesnis „Python“ be skausmo
  • Kas yra „Cython“? Python C greičiu
  • „Cython“ pamoka: kaip pagreitinti „Python“
  • Kaip įdiegti „Python“ išmaniuoju būdu
  • Geriausios naujos „Python 3.8“ funkcijos
  • Geresnis „Python“ projektų valdymas naudojant „Poetry“
  • „Virtualenv“ ir „venv“: paaiškintos „Python“ virtualios aplinkos
  • „Python virtualenv“ ir „venv do and donts“
  • Paaiškinta „Python“ sriegimas ir antriniai procesai
  • Kaip naudotis „Python“ derintuvu
  • Kaip naudoti „Timeit“, kad būtų galima nustatyti „Python“ kodą
  • Kaip naudoti „cProfile“ „Python“ kodui nustatyti
  • Pradėkite naudoti „Python“ asinchronizavimą
  • Kaip naudoti „asyncio“ Python
  • Kaip konvertuoti „Python“ į „JavaScript“ (ir dar kartą)
  • „Python 2“ EOL: kaip išgyventi „Python 2“ pabaigą
  • 12 pitonų kiekvienam programavimo poreikiui
  • 24 „Python“ bibliotekos kiekvienam „Python“ kūrėjui
  • 7 mieli „Python“ IDE, kurių galbūt praleidote
  • 3 pagrindiniai „Python“ trūkumai ir jų sprendimo būdai
  • Palyginti 13 „Python“ žiniatinklio sistemų
  • 4 „Python“ testavimo sistemos, kad sutriuškintumėte jūsų klaidas
  • 6 puikios naujos „Python“ funkcijos, kurių nenorite praleisti
  • 5 „Python“ paskirstymai, skirti įsisavinti mašininį mokymąsi
  • 8 puikios „Python“ bibliotekos, skirtos natūraliai kalbai apdoroti