Ohjelmointi

Python 2 EOL: Kuinka selvitä Python 2: n loppu

1. tammikuuta 2020 alkaen sen luojat, Python Software Foundation, eivät enää tue Python-ohjelmointikielen 2.x-haaraa. Tämä päivämäärä on huipentuma draamaan, joka on jatkunut vuosia - siirtyminen vanhemmasta, vähemmän kykenevästä, laajasti käytetystä Python-versiosta uudempaan, tehokkaampaan versioon, joka edeltää edelleen edeltäjänsä käyttöönottoa.

On korkea aika. Python 3, jossa on lukemattomia teknisiä ja loppukäyttäjien parannuksia Python 2: een nähden, ei ole koskaan ollut paremmassa asemassa siirtämään pysyvästi Python 2: ta. Suurin osa suosituimmista paketeista, joita isännöi PyPI-arkisto, uudelleenkäytettävän Python-koodin ensiluokkainen kauppa, tuki Python 3. Python 3: sta on tullut oletusarvoinen Python-tulkki monille Linux-jakeluille. Ja useimmissa uusissa kirjoissa, koodausakatemiassa ja online-opetusohjelmassa suositellaan Python 3: ta aloittelijoille.

Nyt huono uutinen. Python 2, kuten Windows 7 (tai Windows XP!), On kanssamme tulevina vuosina. Monet meistä luottavat edelleen Python 2: een kirjoitettuihin sovelluksiin. Jotkut meistä jatkavat jopa Python 2: n käyttöä uusissa sovelluksissa sisäisten rajoitusten vuoksi. Mitä pitäisi tehdä, jos olet jumissa Python 2: n kanssa siinä, josta on nopeasti tulossa Python 3 -maailma? Katsotaanpa vaihtoehtoja.

Python 2: n käyttöikä: Mitä se tarkoittaa

Ensimmäinen ja tärkein asia, joka on ymmärrettävä Python 2: n siirtymisestä EOL: iin (elämän loppu): Python 2 -sovellukset toimivat edelleen. Älä ajattele tätä Millennium Bug -ongelmana, jossa Python 2 -sovellukset kaikki maagisesti pysähtyvät 1. tammikuuta 2020. Ei enää tule olemaan enää virallinen tuki Python 2: lle Pythonin ytimen kehitystiimistä.

Tässä on mitä Python 2 EOL tarkoittaa käytännössä:

  • Viralliset virheenkorjaukset ja Python 2: n tietoturvakorjaukset lopetetaan. Ydinkehitystiimi ei korjaa yhtään äskettäin havaittua ongelmaa Python 2 -tulkissa tai Python 2 -kirjastossa. Kaupalliset toimittajat voivat kuitenkin ylläpitää Python 2: ta yksin, ja muut kolmannet osapuolet voivat haarauttaa Python 2 -koodipohjan ja jatkaa siitä, mistä ydinryhmä lopetti. (Lisätietoja tästä myöhemmin.)
  • Kolmannen osapuolen Python-projektit hylkäävät Python 2: n. Sekä Python 2: a että Python 3: ta tukeneet kirjastot alkavat omistaa resurssinsa yksinomaan Python 3: lle. Monet näistä projekteista ovat vapaaehtoisia, ja vain yhden kieliversion tukeminen on paljon vähemmän työtä. Jokainen projekti päättää itse Python 2 -tuesta, mutta monet suuret Python-projektit sitoutuvat luopumaan Python 2 -tuesta kokonaan vuoteen 2020 mennessä.
  • Python 2: n alustatuki vähenee. Linux-jakelut ja pilvipalvelujen tarjoajat voivat edelleen sisällyttää Python 2: n ajon. Mutta odota, että Python 2: n tuki vähenee ajan myötä. Melkein varmasti on silti mahdollista suorittaa Python 2: n konttiversio pilvialustalla, mutta ei ole mitään takeita siitä, että pilvipalvelujen tarjoajat jatkavat omien Python 2 -säiliöidensä ylläpitämistä.

Jos olet jumissa Python 2 -sovellusten kanssa, miten sinun pitäisi käsitellä Python 2 -tukien puuttumista? Paras asia tehdä pitkällä aikavälillä on löytää strategia kaikkien riippuvuuksien poistamiseksi Python 2: sta. Mutta se on vain ensimmäinen monista vaihtoehdoista.

Siirtyminen pois Python 2: sta

Python 2: n jättäminen Python 3: een voi olla helpompaa kuin odotatkin, riippuen koodipohjan koosta ja ulkoisista riippuvuuksista. Pythonin virallisessa dokumentaatiossa on joitain suoraviivaisia ​​vaiheita, joiden avulla voit selvittää, onko projektisi "tulevaisuuden kestävä", toisin sanoen, voidaanko sitä käyttää Python 3: ssa vain vähän tai ilman muutoksia. Yksi parhaista ensimmäisistä vaiheista, joita voit tehdä, on käyttääcaniusepython 3 paketti selvittääksesi, mitkä komponentit tai riippuvuudet estävät siirron.

Jos olet jumissa Python 2: n kanssa, koska sovelluksen tietty komponentti toimii vain Python 2: ssa, aloita siirtymällä pois kyseisestä komponentista. Tarkista, onko olemassa Python 3 -yhteensopiva vaihtoehto, ja rakenna sitten sovellus uudelleen siitä pisteestä ulospäin. Ajatuksena on etsiä pienimmät paikat, joissa riippuvuus Python 2: sta on, ja puuttua niihin.

vähintään voit tehdä, jos sinun on pysyttävä jossakin muodossa Python 2: ssa, aloita siirtymällä Python 2: n uusimpaan versioon - Python 2.7.16 tämän kirjoituksen jälkeen - ja käytä sitä Python 3: n lähtökohtana. Hyödynnä virhekorjauksista, jotka ovat saatavilla Python 2.7: lle ennen sen virallista käyttöikää.

Käytä vaihtoehtoista Python 2-ajonaikaa

Jos Python 2 -koodipohjan muuttaminen ei ole toimiva ehdotus, toinen vaihtoehto on käyttää erilaista kolmannen osapuolen kehittämää Python 2-ajonaikaa. Vaihtoehtoisilla Python 2 -ajoilla voi olla pidempi tuki-ikkuna kuin itse Python 2: lla.

Tauthon

Tauthon on Python 2.7.18 -haarukka ”, jossa on uudet syntaksit, sisäänrakennukset ja kirjastot, jotka on tuettu Python 3.x: stä”, projektin README: n mukaan. Tauthon sisältää myös korjauksia ja korjauksia kielelle aina, kun ylläpitäjät voivat tarjota niitä. Teoriassa Tauthonin pitäisi toimia drop-in-korvaajana Python 2.7: lle. Tämän kirjoituksen viimeisin julkaisu, Tauthon 2.8.2, sisältää toimintomerkinnät, vain avainsanat-argumentit, asynkronoi / odota syntaksia ja muita ominaisuuksia, jotka aiemmin olivat käytettävissä vain Python 3: ssa.

PyPy

PyPy, juuri oikeaan aikaan nopeutettu Pythonin ajonaika, käyttää Python 2: ta oman sisäisen infrastruktuurinsa keskeisenä osana ja on pitkään tukenut Python 2: ta pääversiona. Projektin dokumentaatio väittää, että "koska RPython [PyPyn perusta] on rakennettu Python 2: n päälle ja se on erittäin epätodennäköistä, PyPy Python 2 -versio on noin" ikuisesti "eli niin kauan kuin PyPy itse on noin." PyPy saattaa aiheuttaa yhteensopivuus- tai suorituskykyongelmia joidenkin Py-pakettien kanssa, jotka luottavat C-laajennuksiin, vaikka PyPyn kehitystiimi pyrkii jatkuvasti ratkaisemaan nämä ongelmat.

IronPython

IronPythonilla, .Net-ajonaikaisella Python-sovelluksella, on Python 2 -versio, joka saa edelleen aktiivista tukea. Sen nykyinen kehittäjien luettelo on ilmoittanut, etteivät ne todennäköisesti tue Python 2: ta viime vuoden 2020 aikana, sitä parempi keskittyä IronPython3: een. Tämä ei kuitenkaan tarkoita, että joku muu ei voisi jatkaa tällaista tukea yksin.

Cython

Toinen mahdollisuus, vaikkakin rajoitetulla tukiikkunalla, on Cython. Cython kääntää Pythonin C: ksi valinnaisella kirjoittamisella suorituskyvyn parannuksia varten ja on tukenut Python 2: ta alusta lähtien. Cythonilla on mahdollista muuntaa Python 2 -koodi C: ksi jatkuvaa käyttöä varten "jäädytettynä" binaarina. Voit jopa parantaa suorituskykyä tekemällä niin sovelluksen luonteesta riippuen. (Ohjelmat, jotka ovat pääasiassa I / O-sidottuja, eivät näe paljon parannusta.)

Cython kuitenkin aikoo pudottaa Python 2 -tukea vuoden loppuun mennessä. Tämä ei tarkoita sitä, että Python 2 -ohjelmat eivät enää käänny Cythoniin, vaan että vain Python 2 -syntaksia käyttävä Cython-koodi olisi käännettävä käyttämällä Python 3: ta

Osta laajennettu Python 2 -tuki myyjältä

Yksi pitkäaikainen ratkaisu on saada tukea Python-ratkaisujen toimittajalta. ActivePython-jakelun ja Komodo IDE: n luoja ActiveState tarjoaa kaupallista tukea asiakkaille, jotka haluavat pysyä Python 2: n kanssa tai jotka haluavat siirtyä Python 3: een tunnistamalla Python 3: n uudelleenkirjoitettavat osat.

Jotkut toimittajat tarjoavat tukea Python 2: lle osana sen läsnäoloa toisessa tuetussa tuotteessa. Red Hat Enterprise Linux -versiot 6 ja 7 sisältävät Python 2: n, joten kaikki Red Hatilta ostetut tukisopimukset kyseisille käyttöjärjestelmäversioille sisältävät Python 2: n jatkuvan tuen tuotteen tuen käyttöiän ajan.

Jos käytät Python 2: ta pilvipalveluna, on mahdollista, että palvelu tukee edelleen Python 2: ta omalla tavallaan. Esimerkiksi AWS on ilmoittanut toimittavansa suojauskorjauksia Python 2.7: n ajonaikaansa 31. joulukuuta 2020 asti, vaikka tämä ei koske kolmansien osapuolten Python 2.7 -paketteja.

Kolmas vaihtoehto on ostaa tukea konsulttiyritykseltä tai urakoitsijalta. Heidän antamansa tuen taso vaihtelee tarpeidesi ja tavoitteidesi mukaan. Se voi koostua siirtymäsuunnitelman laatimisesta siirtymiseksi pois Python 2: sta ja riippuvien ohjelmistojen uudelleenkirjoittamisesta (luultavasti paras pitkäaikainen strategia) tai Python 2: n korjaustiedostojen yhdistämisestä manuaalisesti ajonaikaisen mukautettuun kokoonpanoon (kunnianhimoinen ja monimutkainen) ).

Ylläpidä Python 2 itse

Python on avoimen lähdekoodin projekti. Mikään ei estä sinua toteuttamasta tarvittavia korjauksia itse. Jos korjaus on muutos Pythonin vakiokirjastoon, se ei yleensä ole kovin vaikeaa, koska suurin osa Python-standardikirjastosta on itse kirjoitettu Pythonissa. Mutta jos sinun on tehtävä muutoksia Pythonin normaalikirjastossa käyttämään C-moduuliin tai CPython-tulkkiin, se olisi haastavampaa. Tämän saavuttamiseksi sinun on tiedettävä C ja tunnettava CPythonin sisäosat.

Älä tee mitään

Jos se ei ole rikki, älä korjaa sitä. Tätä strategiaa monet yritykset käyttivät Windows NT: n ja Windows 2000: n kanssa, kun kyseiset käyttöjärjestelmät lopetettiin. Python-sovelluksia, jotka on tarkoitettu vain sisäiseen käyttöön ja jotka eivät ole alttiina julkiselle Internetille, voidaan teoriassa käyttää loputtomiin.

Virtuaalikoneet ja konttien toimittaminen tarjoavat tapoja pitää tällaiset sovellukset elossa ja hyvin hallitussa ympäristössä. Voit "jäädyttää" tietyn Python 2: n ajonaikaisen version konttikuvaksi tai virtuaalikoneeksi yhdessä sen vakiokirjaston, sovelluksellesi tarvittavien moduulien ja itse sovelluksen kanssa.

Jokainen vanha sovellus, jopa sellainen, jolla ei ole ulkoista altistumista, tulisi arvioida uudelleen säännöllisesti. Joka tapauksessa paras pitkäaikainen strategia Python 2 -käyttäjille on siirtyminen Python 3: een. Python 2, niin suuri kuin se onkin ollut, on jotain, josta on siirryttävä ohi.

Lue lisää Pythonista

  • Mikä on Python? Tehokas, intuitiivinen ohjelmointi
  • Mikä on PyPy? Nopeampi Python ilman kipua
  • Mikä on Cython? Python nopeudella C
  • Cython-opetusohjelma: Kuinka nopeuttaa Pythonia
  • Kuinka asentaa Python älykkäästi
  • Python 3.8: n parhaat uudet ominaisuudet
  • Parempi Python-projektinhallinta Poetryn avulla
  • Virtualenv ja venv: Python-virtuaaliympäristöt selitetty
  • Python virtualenv ja venv do and don'ts
  • Python-ketjuttaminen ja aliprosessit on selitetty
  • Kuinka käyttää Python-virheenkorjainta
  • Kuinka käyttää timeit Python-koodin profilointiin
  • CProfilen käyttäminen Python-koodin profilointiin
  • Aloita asynkronointi Pythonissa
  • Asyncion käyttäminen Pythonissa
  • Kuinka muuntaa Python JavaScriptiksi (ja takaisin)
  • Python 2 EOL: Kuinka selvitä Python 2: n loppu
  • 12 pyytonia jokaiselle ohjelmointitarpeelle
  • 24 Python-kirjastoa jokaiselle Python-kehittäjälle
  • 7 suloista Python IDE: tä, jotka saatat olla unohtanut
  • 3 suurta Python-puutetta - ja niiden ratkaisut
  • 13 Python-verkkokehystä verrattiin
  • 4 Python-testikehystä vikojen murskaamiseksi
  • 6 upeaa uutta Python-ominaisuutta, joita et halua hukata
  • 5 Python-jakelua koneoppimisen hallitsemiseksi
  • 8 suurta Python-kirjastoa luonnollisen kielen käsittelyyn
$config[zx-auto] not found$config[zx-overlay] not found