Python is tegenwoordig erg populair onder developers én sysadmins. Als beheerder krijg je wel eens de vraag om extra Python-modules te installeren op je systemen. Maar hoe doe je dat het best? We nemen even de verschillende mogelijkheden met je door.
Tegenwoordig is Python standaard aanwezig in elke Linux-distributie. Veel systeemtools zijn immers in Python geschreven, zoals bijvoorbeeld de apt package manager. De package manager is ook je eerste keuze om extra Python-modules te installeren. In Debian-gebaseerde systemen vind je meer dan 9000 (!) Python-gerelateerde pakketten terug. De kans is dus erg groot dat je de gezochte module gewoon via apt kunt installeren. Maar let op: de meeste distributies bevinden zich in een overgangsfase van Python 2 naar Python 3, waarbij die eerste nog steeds als standaard is ingesteld:
$ python --version Python 2.7.17
Python 3 is weliswaar ook geïnstalleerd, maar start je op als python3:
$ python3 --version Python 3.6.9
Belangrijk om weten is dat modules voor Python 2 en 3 niet onderling uitwisselbaar zijn. Kijk dus eerst na of het programma in kwestie voor Python 2 of 3 ontwikkeld is voordat je extra modules installeert. Wil je bijvoorbeeld de pandas-module gebruiken voor data-analyse, installeer dan het pakket python-pandas (voor Python 2) of python3-pandas (voor Python 3). Uiteraard verkies je zelf Python 3 om nieuwe programma’s te ontwikkelen. Python 2 is enkel nog beschikbaar om de talloze oude programma’s te ondersteunen, die nog niet gemigreerd zijn naar Python 3.
Pip
Vroeg of laat kom je toch een module tegen die niet beschikbaar is via de package manager van je systeem. In dat geval kun je overstappen naar Pythons eigen package manager: pip. Elke gebruiker kan via pip extra modules installeren in zijn eigen homedirectory. De Python Package Index bevat een mooi overzicht van alle beschikbare pakketten: https://pypi.org. Merk op dat er wederom twee versies bestaan van pip: pip en pip3. Mogelijk moet je die eerst nog installeren via apt (python-pip en/of python-pip3). Je hoeft slechts enkele commando’s te onthouden om pip te gebruiken:
* pip search <zoekterm>: zoek naar pakketen
* pip show <pakket>: toon informatie over een pakket
* pip install / uninstall <pakket>: installeer of verwijder een pakket
* pip list: toon alle geïnstalleerde pakketten
Virtual environments
Wil je een module voor alle gebruikers beschikbaar maken, start dan pip als root om die te installeren onder /usr/local. Vaak gebruikt men pip op die manier om nieuwere versies van modules te installeren dan die in de repository van de distributie. Toch raden we je die methode niet meteen aan. De kans bestaat dat je ongewenste verkeerde versies van modules activeert voor verschillende applicaties. Vereist een bepaalde applicatie een specifieke versie van een module, dan draai je die beter in een zogenaamde virtual environment. Python installeert de modules dan in een aparte directory voor enkel die applicatie. Op die manier kun je per applicatie kiezen welke extra modules (en welke versies) je precies nodig hebt. Voor de rest gebruikt je applicatie dan gewoon de Python-modules van je systeem. Python 3.4 en hoger bevatten de venv-module om een virtual environment aan te maken in een directory:
$ python3 -m venv <directory>
Dat hoef je slechts éénmaal te doen. Daarna activeer je de virtual environment met:
$ source <directory>/bin/activate (<directory>) $
Alle pip-commando’s die je nu uitvoert, hebben geen invloed op de rest van het systeem. Start je programma in de virtual environment om de specifieke Python-modules te gebruiken. Je verlaat de virtual environment met het volgend commando:
(<directory>) $ deactivate
Het virtualenv-commando biedt gelijkaardige functionaliteit voor oudere Python-versies. Je installeert het via het virtualenv-pakket van je distro.