Varning om du använder Python 2

Det var länge sedan som det utannonserades att Python 2 kommer att nå end of life (EOL) 1:a Januari 2020. Men tyvärr så har många företag och organisationer en teknisk skuld och ligger efter med arbetet med att uppgradera till Python 3.

Brittiska National Cyber Security Centre gick ut med en varning tidigare i veckan gällande Python 2 samt tittade närmare på statistik när det gäller användningen av Python 2.
Så här ser användningen av några populära paket på PyPI gällande data från Juni 2019:
Paket | Python 2 | Python 3 | Okänd Version |
---|---|---|---|
Colorama | 82.07% | 17.71% | 0.22% |
botocore | 72.86% | 26.84% | 0.30% |
urllib3 | 64.14% | 35.50% | 0.37% |
Requests | 53.37% | 46.02% | 0.61% |
scikit-learn | 43.80% | 55.90% | 0.30% |
NumPy | 40.69% | 58.70% | 0.61% |
Pillow | 37.78% | 61.31% | 0.91% |
TensorFlow | 37.66% | 61.25% | 1.09% |
Matplotlib | 33.17% | 66.34% | 0.49% |
Flask | 31.28% | 68.33% | 0.39% |
Men hur gör man för att uppgradera då? Först kontrollera att du har python3 installerat i ditt operativsystem:

Sen testar vi programmet vi har utvecklat för Python 2 som vi vill uppgradera till version 3:

Funkar dåligt. Så då tar vi och använder verktyget 2to3 samt anger argumentet -w för att skriva ändringarna direkt till filen:
$ 2to3 -w episploit.py
Och sedan är det bara att köra programmet om allt gick som det ska. Ibland kan manuell handpåläggning behövas.
Än så länge får Python 2 säkerhetsfixar men det gäller enbart tills den 1:a Januari 2020. Och för att citera NCSC:
By making the decision to continue using Python 2 past its end of life, you are accepting all the risks that come with using unsupported software, while knowing that a secure version is available.