Migrering fra Python 2 til Python 3: En guide til forberedelse til fristen i 2020

Python spiser verden: Hvordan en udviklers sideprojekt blev det hotteste programmeringssprog frustreret af mangler ved programmeringssprog, skabte Guido van Rossum Python. Med det sprog, der nu bruges af millioner, snakker Nick Heath med van Rossum om Pythons fortid og udforsker, hvad der er næste.

Python tiltrækker muligvis nye udviklere med en rekordhastighed, men et potentielt sikkerhedsproblem er truende for udviklere, der ikke har vedtaget den seneste version af programmeringssprog.

Must-read udviklerindhold

  • Java og JavaScript dominerede softwareudvikling i 2010'erne
  • Sådan bliver du en udvikler: Et snyderi
  • 10 måder at forhindre udbrændthed af udviklere (gratis PDF)
  • Python spiser verden: Hvordan en udviklers sideprojekt blev det hotteste programmeringssprog på planeten

Introduktionen af ​​Python 3 i 2008 moderniserede det årtier gamle sprog, men brød også foreneligheden med tidligere versioner af Python.

Med kun fire måneder tilbage, indtil supporten slutter for Python 2, er der stadig nogle udviklere og projekter, der ikke har skiftet til Python 3.

Presset for at foretage flytningen vokser med Python 2-tolk og bundtet biblioteker på grund af at ophøre med at modtage fejlrettelser fra 1. januar 2020.

Behovet for at migrere vil potentielt påvirke mange udviklere. Pythons ustoppelige stigning er almindeligt anerkendt - stort set drevet af dens brug til maskinlæring - med nogle, der forudsiger, at det snart bliver det mest populære programmeringssprog i verden.

"Virksomheder med applikationer, der kører under enhver version af Python 2, er nødt til at migrere - og jo før, jo bedre, " sagde Bart Copeland, administrerende direktør i softwareudviklingssupportvirksomheden ActiveState.

"Imidlertid, fordi migrering til en ny version af Python er en betydelig virksomhed, bør den ikke forhastes. I stedet for at migrere inden fristen vil hjælpe udviklere med at tage den tid, der er nødvendig for at gøre det godt, og tage højde for eventuelle uforudsete fejl i god tid. "

Python spiser verden: Hvordan en udviklers sideprojekt blev det hotteste programmeringssprog på planeten (cover story PDF)

Et af de største potentielle problemer er antallet af Python 2-versioner af populære softwarepakker, der stadig downloades.

"Selv hvis kun en del af disse downloads bruges i live-projekter, kan Python 2 EOL End of Life potentielt påvirke sikkerheden i millioner af systemer, " skriver National Cyber ​​Security Center (NCSC) i en rådgivende.

Midt i populære pakker - dem, der blev downloadet millioner af gange hver måned - lidt over 40% af downloads til scikit-learning var Python 2-versioner, ligesom 37% for TensorFlow-pakken og lidt over 30% for Flask-pakken.

ActiveState's Copeland siger, at der stadig er betydelige implementeringer af Python 2-applikationstjenester og scripts.

"Vi har talt med mange organisationer, der er bekymrede over den forestående Python 2 EOL. Universelt set er de bekymrede over uundgåelige kodesårbarheder og den indflydelse, de vil have på applikationssikkerhed, " siger han.

Heldigvis betyder det at være kompatibel med Python 3 ikke at erstatte kode engros, idet det er muligt at ændre Python 2.6-koden videre og videre til en form, der også er kompatibel med en Python 3-tolk.

"Det anbefalede handlingsforløb er at modernisere gradvis for at tackle fejl gradvist, " siger Copeland.
Fintan Ryan, forskningsdirektør med teamet til applikationsplatformstrategier for analytikervirksomheden Gartner, siger, at det er en god måde at forberede sig på migration at sigte mod tværgenerationskompatibilitet.

"Som et mellemtrin er det bestemt noget, der kan gøres, og for mange organisationer med en masse kodearbejde kan det være så vidt de kommer, " siger han.

Mere must-read Python-dækning (TechRepublic på Flipboard)

Sådan gør du dig klar til at migrere

Python Software Foundation giver allerede en omfattende guide til, hvordan man opnår tværgenerationskompatibilitet for organisationer, der har brug for at køre både Python 2 og 3 side om side, og her er et resume af dets råd.

  1. Drop support til Python 2.6 og ældre, da det er langt nemmere at migrere fra Python 2.7, og hvis du skal køre Python 2.6, skal du undersøge at bruge det seks bibliotek for kompatibilitet med Python 3.

  2. Sørg for, at din setup.py-fil korrekt angiver, hvilke versioner af Python din codebase understøtter, med filen inklusive mindst Programmeringssprog :: Python :: 2 :: Kun som en trove-klassifikator.

  3. Din testsuite skal have mindst 80% kodedækning, navnet givet til hvor meget af din kildekode, der udføres under testen. Hvis du ikke kender din kodedækning, skal du bruge de værktøjer, der er leveret af covers.py.

  4. Lær forskellene mellem Python 2 og Python 3 ved at læse Pythons Hvad er nyt doc og den gratis Porting to Python 3-bog.

  5. Brug Futurize eller Modernize til at gøre din Python 2-kode Python 3-kompatibel, og sørg for at læse dokumentationen, så du kan løse de problemer, disse ikke kan håndtere.

  6. Sørg for at imødekomme ændringer i, hvordan heltalinddelingen håndteres mellem Python 2 og 3. F.eks. I Python 2 9/2 = 4 og i Python 3 9/2 = 4.5 . Hvis du har brugt fra __future__ importdivision i din kode og // operatoren til heltalinddeling, vil din kode allerede være Python 3-kompatibel.

  7. Python 3 foretager ændringer til hvilke data, der kan bruges med str- typen, for at skelne mellem tekst og binære data klarere. Desværre for kode, der beskæftiger sig med både tekst og binære data, skal du tage følgende skridt for at sikre, at din kode er kompatibel. En valgfri statisk type checker, såsom mypy, kan også hjælpe med at afgøre, om du misbruger binære data i en version af Python sammenlignet med en anden.

  8. Når du kører kode, der opfører sig forskelligt baseret på hvilken version af Python, der kører, er det bedre at kontrollere, om en bestemt funktion, der understøttes i Python 3, er i stand til at køre, snarere end at kontrollere, om sys.version_info 0 er lig med 3.

  9. For at hjælpe med at justere enhver ny kode, der er skrevet med Python 3 og sikre dens kompatibilitet, skal du bruge følgende udsagn øverst i eventuelle nye moduler, du opretter: fra __future__ import absolute_import, fra __future__ import division og fra __future__ import print_function. Pylint-projektet og dets - py3k-flag forhindrer også uforeneligheder i at krybe ind i kode.

  10. Kontroller, hvilke softwareafhængigheder der forhindrer dig i at understøtte Python 3 ved hjælp af de værktøjer, der leveres af caniusepython3-projektet.

  11. Når du har migreret kode, skal du opdatere dine klassifikatorer i filen setup.py til at indeholde programmeringssprog :: Python :: 3 for at indikere, at din kode understøtter Python 2 og 3.

  12. Sørg for, at din kode forbliver kompatibel med Python 2 og 3 ved at automatisere test ved hjælp af tox og integrere denne opsætning med dit kontinuerlige integrationssystem.

Til migrering af Python 2 til Python 3-kode anbefaler NCSC også 2to3-applikationen, der forsøger at automatisere processen.

Copeland tilføjer, at organisationer, der fokuserer på datavidenskab, også burde planlægge at vedtage Python 3, "da alle datavidspakkeopretterne har annonceret deres planer om at migrere" i 2020, inklusive dem, der ligger bag de populære pakker NumPy, Requests og TensorFlow.

Der er også tegn på, at flertallet af Python-udviklere nu bruger Python 3, efter at års udviklere klamrer sig fast til Python 2.0, idet JetBrains konstaterede, at 84% af programmerere, der havde skiftet.

De, der ikke er migreret fra Python 2 inden fristen hits i januar 2020, kan også vælge at betale for ekstra support fra en tredjepart, med ActiveState, der tilbyder support til både Python 2-kernesproget og standardbiblioteker, samt backported sikkerhedsrettelser implementeret i Python 3 kernesprogkode og tredjepartspakker.

Foruden sikkerhedsfordelene ved at flytte til Python 3 har NCSC produceret en liste over nyttige funktioner, der findes i den nyeste version, herunder udbyttet fra udtryk, unicode- strenge, en mere kapabel udskrivningsfunktion og kompleks med udsagn, der er lettere at læse.

Hvis du vil følge med på, hvor længe du har tilbage, kan du tjekke dette nedtællingsur.

Innovationsnyhedsbrev

Vær opmærksom på smarte byer, AI, Internet of Things, VR, AR, robotik, droner, autonom kørsel og mere af de fedeste tekniske innovationer. Leveres onsdage og fredage

Tilmeld dig i dag

Se også

  • Sådan bliver du en udvikler: Et snyderi (TechRepublic)
  • Implementering af DevOps: En guide til it-professionelle (gratis PDF) (TechRepublic)
  • Telefonsamtale snyderark: Softwareudvikler (TechRepublic Premium)
  • Programmeringssprog: Udviklere afslører mest elskede, mest afsky, hvad der betaler bedst (ZDNet)
  • Det kræver arbejde at holde dine data private online. Disse apps kan hjælpe (CNET)
  • Programmeringssprog og udviklerkarriereressourcer (TechRepublic på Flipboard)

© Copyright 2020 | mobilegn.com