Python 2 vs. Python 3

Uit De Vliegende Brigade
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

Python kent twee actuele major versies: 2.x en 3.x. Daarnaast lijken 3.5 & 3.7 van elkaar gescheiden te zijn (okt. 2019). Daarnaast is er een goede kans, dat je verscheidene versies tegelijkertijd op een computer hebt. Het maakt het er niet gemakkelijker op.

Versie achterhalen - Vanuit een script

Vanuit een script achterhalen met welke versie van Python het is aangeroepen [1]. Dit werkt voor zowel Python 2.x als 3.x:

import sys
print (sys.version)

Voorbeelden:

#! /usr/bin/python

import sys
print (sys.version)

geeft

2.7.12 (default, Nov 12 2018, 14:36:49) 
[GCC 5.4.0 20160609]

en

#! /usr/bin/python3

import sys
print (sys.version)

geeft

3.5.2 (default, Nov 12 2018, 13:43:14) 
[GCC 5.4.0 20160609]

Versie achterhalen - Vanuit bash

Bijvoorbeeld

python -V
python3 -V
python3.4 -V
python3.7 -V

Voorbeeld (okt. 2019):

python -V
Python 2.7.12
python3 -V
Python 3.5.2

Incompatibele minor-versies?

Het is normaal dat meerdere versies van Python op een systeem zijn geïnstalleerd [2], zoals al bleek uit de voorbeelden hiervoor. Het wordt pas vervelend dat het er op lijkt, dat minor-versies niet met elkaar compatibel zijn. Je kunt dus niet in één script bv. 3.5- & 3.7-bibliotheken gebruiken.

[3] geeft dit voorbeeld:

I have Python 3.7 installed on my computer. I want to use tensorflow and just found out that it 
basically doesn't support 3.7, so I'd like to (also) install Python 3.6.

Any suggestions of how to do that? Do I have to uninstall 3.7 and replace it by 3.6 or is there 
a way to just use 3.6 for the stuff related to tensorflow?

De antwoorden behandelen verschillende manieren om tussen versies van Python te wisselen. Daar schijnen tools voor te zijn zoals virtualenv, pipenv en anaconda. Of gewoon een andere interpretator aanroepen.

Op welke versie standaardiseer ik?

Python 2.x stamt uit 2008, dus het ligt voor de hand dat 3.x de juiste keuze is. Echter, een decennium later blijkt 2.x nog steeds relevant te zijn:

  • Half 2018: Op mijn laptop is 2.7 geïnstalleerd → Hierop standaardiseer ik
  • Jan. 2019: Nog steeds 2.7 op m'n laptop → 2.7
  • Jan. 2019: Ik blijk beide versies op m'n laptop te hebben + wisselen is gemakkelijk → 3.x

Ondersteuning Python 2 stopt (aug. 2019)

Als ik nog enige twijfel zou hebben, is die nu weg: https://tweakers.net/nieuws/156416/ncsc-waarschuwt-voor-einde-ondersteuning-python-2.html

MySQL.connector vereist 3.7 (okt. 2019)

Oracle's connector voor MySQL-databases, vereist versie 3.7. Sois → 3.7. Waarschijnlijk zal ik meerdere minor-versies naast elkaar gebruiken.

Zie ook

Bronnen