Migrere fra Python 2 til Python 3: En guide til forberedelser til 2020-fristen

Python spiser verden: Hvordan en utviklerens sideprosjekt ble det hotteste programmeringsspråket Frustrert av mangler ved programmeringsspråk, skapte Guido van Rossum Python. Med det språket som nå brukes av millioner, snakker Nick Heath med van Rossum om Pythons fortid og utforsker hva som er neste gang.

Python tiltrekker seg nye utviklere med rekordhastighet, men et potensielt sikkerhetsproblem er truende for utviklere som ikke har klart å ta i bruk den siste versjonen av programmeringsspråket.

Må-lese utviklerinnhold

  • Java og JavaScript dominerte programvareutvikling på 2010-tallet
  • Hvordan bli utvikler: Et jukseark
  • 10 måter å forhindre utbrenthet av utviklere (gratis PDF)
  • Python spiser verden: Hvordan en utviklerens sideprosjekt ble det hotteste programmeringsspråket på planeten

Innføringen av Python 3 i 2008 moderniserte det tiår gamle språket, men brøt også kompatibiliteten med tidligere versjoner av Python.

Med bare fire måneder igjen til støtten slutter for Python 2, er det fremdeles noen utviklere og prosjekter som ikke har gått over til Python 3.

Presset for å gjøre flytten vokser, med Python 2-tolk og medfølgende biblioteker på grunn av å slutte å motta feilrettinger fra 1. januar 2020.

Behovet for å migrere vil potensielt påvirke mange utviklere. Pythons ustoppelige økning er anerkjent - hovedsakelig drevet av bruken til maskinlæring - med noen som forutsier at det snart vil bli det mest populære programmeringsspråket i verden.

"Foretak med applikasjoner som kjører under hvilken som helst versjon av Python 2, må migrere - og jo før, jo bedre, " sa Bart Copeland, administrerende direktør i programvareutviklingsstøtteselskapet ActiveState.

Fordi migrering til en ny versjon av Python er et betydelig selskap, bør det ikke forhastes. Flytting før fristen vil hjelpe utviklere til å ta den tiden som trengs for å gjøre det godt, og redegjøre for uforutsette feil i god tid. "

Python spiser verden: Hvordan en utviklerens sideprosjekt ble det hotteste programmeringsspråket på planeten (cover story PDF)

En av de største potensielle problemene er antall Python 2-versjoner av populære programvarepakker som fortsatt lastes ned.

"Selv om bare en del av disse nedlastningene blir brukt i live-prosjekter, kan Python 2 EOL End of Life potensielt påvirke sikkerheten til millioner av systemer, " skriver National Cyber ​​Security Center (NCSC) i en rådgivende.

Midt blant populære pakker - de som lastes ned millioner av ganger hver måned - i overkant av 40% av nedlastningene for scikit-learning var Python 2-versjoner, og 37% for TensorFlow-pakken, og litt over 30% for Flask-pakken.

ActiveState's Copeland sier at det fremdeles er betydelige distribusjoner av Python 2-applikasjonstjenester og skript.

"Vi har snakket med mange organisasjoner som er bekymret for den forestående Python 2. EOL. Universelt sett er de bekymret for uunngåelige kodesårbarheter og virkningen de vil ha på applikasjonssikkerhet, " sier han.

Heldigvis å være kompatibel med Python 3 betyr ikke at du bytter ut engros-kode, med at det er mulig å endre Python 2.6-koden videre og videre til et skjema som også er kompatibelt med en Python 3-tolk.

"Det anbefalte handlingsforløpet er å modernisere trinnvis for å håndtere feil gradvis, " sier Copeland.
Fintan Ryan, forskningsdirektør med applikasjonsplattformstrategiene for analysefirmaet Gartner, sier at å sikte på tvers av generasjons kompatibilitet er en god måte å forberede seg på migrasjon på.

"Som et mellomtrinn er det definitivt noe som kan gjøres, og for mange organisasjoner med mye kodearbeid kan det være så langt de kommer, " sier han.

Mer må-lese Python-dekning (TechRepublic på Flipboard)

Slik gjør du deg klar til å migrere

Python Software Foundation tilbyr allerede en omfattende guide til hvordan du kan oppnå tverrgenerasjonskompatibilitet for organisasjoner som trenger å kjøre både Python 2 og 3 side om side, og her er et sammendrag av rådene.

  1. Slipp støtte for Python 2.6 og eldre, da det er langt enklere å migrere fra Python 2.7, og hvis du må kjøre Python 2.6, kan du undersøke å bruke de seks bibliotekene for kompatibilitet med Python 3.

  2. Forsikre deg om at filen setup.py spesifiserer riktig hvilke versjoner av Python kodebasen din støtter, med filen som minst Programmeringsspråk :: Python :: 2 :: Bare som en trove-klassifiserer.

  3. Testpakken din skal ha minst 80% kodedekning, navnet gitt til hvor mye av kildekoden som blir utført under testing. Hvis du ikke kjenner kodedekningen din, kan du bruke verktøyene som leveres av dekking.py.

  4. Lær forskjellene mellom Python 2 og Python 3 ved å lese Pythons What's New doc og den gratis Porting to Python 3-boken.

  5. Bruk Futurize eller Modernize for å gjøre din Python 2-kode Python 3-kompatibel, og sørg for å lese dokumentasjonen slik at du kan løse problemene disse ikke kan håndtere.

  6. Sørg for å imøtekomme endringer i hvordan heltaledeling håndteres mellom Python 2 og 3. For eksempel i Python 2 9/2 = 4 og i Python 3 9/2 = 4.5 . Hvis du har brukt fra __future__ importdivisjon i koden din og // operatoren for heltaledeling, vil koden din allerede være Python 3-kompatibel.

  7. Python 3 gjør endringer i hvilke data som kan brukes med str- typen, for å gjøre skillet mellom tekst og binær data tydeligere. Dessverre for kode som omhandler både tekst og binære data, må du ta følgende trinn for å sikre at koden din er kompatibel. En valgfri kontroller av statisk type, for eksempel mypy, kan også bidra til å avgjøre om du misbruker binære data i en versjon av Python sammenlignet med en annen.

  8. Når du kjører kode som oppfører seg annerledes basert på hvilken versjon av Python som kjører, er det bedre å sjekke om en spesifikk funksjon som støttes i Python 3 er i stand til å kjøre, i stedet for å sjekke om sys.version_info 0 er lik 3.

  9. For å hjelpe til med å justere eventuell ny kode som er skrevet med Python 3 og sikre kompatibiliteten, bruker du følgende utsagn øverst i eventuelle nye moduler du oppretter: fra __future__ import absolute_import, fra __future__ import divisjon og fra __future__ import print_function. Pylint-prosjektet og dets - py3k-flagg vil også hindre at uforenlighetene kryper inn i kode.

  10. Sjekk hvilke programvareavhengigheter som vil hindre deg i å støtte Python 3 ved å bruke verktøyene levert av caniusepython3-prosjektet.

  11. Når du har migrert kode, må du oppdatere klassifiseringene i filen setup.py slik at den inneholder Programmeringsspråk :: Python :: 3 for å indikere at koden din støtter Python 2 og 3.

  12. Forsikre deg om at koden din forblir kompatibel med Python 2 og 3 ved å automatisere tester med toks og integrere dette oppsettet med det kontinuerlige integrasjonssystemet.

For migrering av Python 2 til Python 3-kode, anbefaler NCSC også 2to3-applikasjonen, som prøver å automatisere prosessen.

Copeland legger til at organisasjoner som er fokusert på datavitenskap også bør planlegge å ta i bruk Python 3, "ettersom alle pakkerne for datavitenskap har kunngjort planene sine om å migrere" innen 2020, inkludert de som ligger bak de populære pakkene NumPy, Requests og TensorFlow.

Det er også tegn på at etter mange år med utviklere som klamrer seg fast til Python 2.0, bruker flertallet av Python-utviklerne nå Python 3, med JetBrains som opplever at 84% av programmererne har gjort byttet.

De som ikke har migrert fra Python 2 innen fristen treffene i januar 2020, kan også velge å betale for ekstra støtte fra en tredjepart, med ActiveState som tilbyr støtte for både Python 2 kjernespråk og standardbibliotek, samt backported sikkerhetsrettinger implementert i Python 3 kjernespråkkode og tredjepartspakker.

Ved siden av sikkerhetsfordelene ved å flytte til Python 3, har NCSC laget en liste over nyttige funksjoner som er funnet i den nyeste versjonen, inkludert utbyttet fra uttrykk, unicode- strenger, en mer kapabel utskriftsfunksjon og komplisert med uttalelser som er lettere å lese.

Hvis du vil holde deg oppdatert på hvor lang tid du har igjen, kan du sjekke denne nedtellingsklokken.

Nyhetsbrev om innovasjon

Vær kjent med smarte byer, AI, Internet of Things, VR, AR, robotikk, droner, autonom kjøring og mer av de kuleste teknologiske nyvinningene. Leveres onsdager og fredager

Registrer deg i dag

Se også

  • Hvordan bli utvikler: Et jukseark (TechRepublic)
  • Implementering av DevOps: En guide for IT-proffer (gratis PDF) (TechRepublic)
  • Cheatark for telefonintervju: Programvareutvikler (TechRepublic Premium)
  • Programmeringsspråk: Utviklere avslører mest elskede, mest avsky, hva som lønner seg best (ZDNet)
  • Det krever arbeid å holde dataene dine private online. Disse appene kan hjelpe (CNET)
  • Programmeringsspråk og karriereressurser for utviklere (TechRepublic på Flipboard)

© Copyright 2020 | mobilegn.com