utvikling

Slik migrerer du til Python 3

Den 1. januar 2020 er det slutt på Python 2. Så det er på høy tid å komme igang med flyttingen. Les her hvordan du gjør det.

Illustrasjon.
Illustrasjon.

Ved årsskiftet er det slutt på Python 2. Det betyr at virksomheter er nødt til å begynne å tenke over hvilken innflytelse det vil ha på deres eksisterende Python-applikasjoner.

I sin tid ble Python 2 brukt som et skripting-språk. Det ble brukt til konfigurasjon og webapplikasjoner. Men så ble Pythons pakker for videnskapelig og numerisk bruk veldig populære.

Python 3 kom på markedet i 2008, men det har vært en del treghet i adopsjonen av den nye versjonen, som på mange punkter bryter kompatibiliteten med den forrige versjonen. Og inntil nå har det ikke nødvendigvis vært noen gode grunner til å skifte.

– Virksomheter med applikasjoner som kjører en hvilken som helst versjon av Python 2 er nødt til å migrere, og jo før, jo bedre, sier Bart Copeland, administrerende direktør i programvareselskapet Activestate til mediet Techrepublic.

Copeland påpeker at populære data- og AI-biblioteker som NumPy og Tensorflow vil skifte til Python 3 den 1. januar.

– Migrering til en ny versjon av Python er en betydelig oppgave, så det bør ikke skje i hui og hast. Migrering som skjer før fristen utløper, vil gi utviklerne den tiden som er nødvendig for å gjøre det ordentlig og ta høyde for eventuelle uforutsette feil i god tid.

Så det er altså bare å komme igang, hvis man ikke allerede har gjort det.

Slik migrerer du koden

Et sted å starte, eller kanskje en desperat nødløsning, kan være programmet 2to3, som automatisk oversetter kode fra den gamle til den nye utgaven.

Utover dette har organisasjonen bak språket, Python Software Foundation, laget en omfattende guide til hvordan man flytter kode fra Python 2 til 3. Techrepublic har oppsummert disse rådene.

Det er langt enklere å migrere fra Python 2.7 enn fra tidligere versjoner. Hvis organisasjonen bruker Python 2.6 skal man benytte biblioteket Six. Det inneholder hjelpefunksjoner som kan utjevne forskjellene mellom Python-versjonene.

Sørg for at din setup.py-fil korrekt angir hvilke versjoner av Python koden din bruker, og at dine tester har minst 80 prosent kodedekning.

Lær forskjellene mellom Python 2 og Python 3 ved å lese Pythons egen What's new-dokumentasjon og den gratisboken Porting to Python 3.

Bruk bibliotekene Futurize eller Modernize til å gjøre Python 2-kode Python 3-kompatibel, og sørg for å lese dokumentasjonen.

Vær oppmerksom på hvordan divisjon med heltall er forskjellig i de to versjonene. Python 2 gir 9/2 = 4, mens samme regnestykke i Python 3 gir verdien 4,5. Hvis du har brukt fra __future__ importdivision i koden din og //-operatoren til heltallsdivisjon, vil din kode allerede være Python 3-kompatibel.

Python 3 er endret med hensyn til hvilke data som kan brukes med str-typen for klarere å skille mellom tekst og binære data. For å sikre kompatibilitet skal en rekke skritt utføres, som gjennomgått i portabilitets-dokumentasjonen. Et verktøy til statisk typesjekk, som Mypy, kan også hjelpe med å finne problemet.

Når man avvikler kode som oppfører seg forskjellig, basert på hvilken versjon av Python som kjører, er det bedre å kontrollere om en bestemt 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.

Kontroller hvilke programvareavhengigheter som spenner bein på Python 3, ved hjelp av verktøyene levert av prosjektet Caniusepython3.

Saken ble først publisert på danske Datatech/Ingeniøren, og gjøres tilgjengelig på norsk for abonnenter av Digi Ekstra gjennom vår samarbeidsavtale med Teknologiens mediehus/Ingeniøren.

Powered by Labrador CMS