Leçon 1 sur 14 · Les bases du langage
Python : installation, interpréteur, premier script, venv et pip
Objectif
Mettre en place un poste de travail Python propre : savoir quel Python est installé, discuter avec l'interpréteur, écrire un premier script et le lancer, puis donner à chaque projet son propre environnement virtuel pour installer des bibliothèques avec pip sans casser le système.
L'essentiel
- Python est un langage interprété : pas de compilation à lancer, on écrit un fichier
.pyet on l'exécute avecpython3 fichier.py. - L'interpréteur interactif (
python3seul, invite>>>) sert à essayer une idée en quelques secondes. - Sous Linux, utilisez
python3; sous Windows, le lanceurpy. Vérifiez toujours la version avecpython3 --version. - Un environnement virtuel (
python3 -m venv .venv) est un dossier qui contient un Python et des paquets propres à un projet. - On installe des paquets avec
python -m pip install …dans l'environnement activé, jamais avecsudo pip.
1. Pourquoi Python ?
Python est apprécié parce qu'il se lit presque comme de l'anglais simple et qu'il est livré avec une bibliothèque standard très riche (fichiers, dates, JSON, CSV, HTTP, compression, bases SQLite…). Le même langage sert à :
- l'administrateur qui remplace un script shell de 300 lignes par 60 lignes lisibles ;
- le développeur qui écrit une API web pour une application de livraison à Casablanca ;
- l'analyste qui transforme chaque mois l'export Excel des ventes d'une coopérative en rapport clair.
Le langage doit son nom aux humoristes anglais des Monty Python, pas au serpent. Le tutoriel officiel en fait d'ailleurs un clin d'œil permanent.
2. Installer Python
Sous Linux
La plupart des distributions fournissent déjà Python 3 : beaucoup d'outils système en dépendent. Vérifiez :
python3 --version # ex. Python 3.12.3
which python3 # /usr/bin/python3
S'il manque, installez-le avec le gestionnaire de paquets de votre distribution, ainsi que le module des environnements virtuels :
# Debian / Ubuntu
sudo apt install python3 python3-venv python3-pip
# Rocky / Alma / RHEL
sudo dnf install python3 python3-pip
Ne supprimez jamais le Python du système et ne remplacez pas /usr/bin/python3 par une autre version : dnf, apt ou des outils comme firewalld s'appuient dessus.
Sous Windows
Installez Python depuis le site officiel (python.org) ou le Microsoft Store. La commande à retenir est le lanceur py :
py --version
py -3.12 script.py # choisir une version précise si plusieurs sont installées
Pendant l'installation depuis python.org, cochez l'option qui ajoute Python au PATH.
Quelle version ?
Utilisez une version 3.x récente et maintenue (3.12 dans nos labs). Python 2 est mort depuis 2020 : si un vieux tutoriel écrit print "bonjour" sans parenthèses, il date de cette époque.
3. L'interpréteur interactif
Tapez python3 sans argument :
$ python3
Python 3.12.3 (main, …) [GCC …] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 + 3
5
>>> 1500 * 1.20 # le prix TTC d'un article à 1 500 DH HT
1800.0
>>> "Rabat".upper()
'RABAT'
>>> help(len) # l'aide intégrée ; touche q pour sortir
>>>est l'invite principale,...apparaît quand une instruction continue sur plusieurs lignes (après unifou unfor) ;- en mode interactif, la valeur d'une expression s'affiche toute seule ; dans un script, il faut
print(); - pour sortir :
Ctrl-Dsous Linux,Ctrl-Zpuis Entrée sous Windows, ouquit().
Deux autres façons de lancer l'interpréteur sont très utiles en administration :
python3 -c 'print(19 * 1.2)' # exécuter une petite instruction
python3 -m http.server 8000 # lancer un module de la bibliothèque comme un programme
python3 -i script.py # exécuter le script puis rester en mode interactif
4. Le premier script
Un script est un simple fichier texte en UTF-8 avec l'extension .py. Créez facture.py :
# facture.py — calcul d'une facture simple
print("Coopérative Tifaout — facture")
prix_ht = 250
print("Prix TTC :", prix_ht * 1.20, "DH")
Lancez-le :
python3 facture.py
# Coopérative Tifaout — facture
# Prix TTC : 300.0 DH
Remarques :
- le
#commence un commentaire, ignoré par Python ; - Python lit le fichier de haut en bas et exécute chaque ligne dans l'ordre ;
- l'indentation compte : une ligne ne doit pas commencer par des espaces sans raison (vous verrez pourquoi avec les conditions). Réglez votre éditeur sur 4 espaces, jamais de tabulations mélangées.
Recevoir des arguments
Le module sys donne accès aux arguments de la ligne de commande :
# salut.py
import sys
print("Bonjour", sys.argv[1])
python3 salut.py Youssef # Bonjour Youssef
sys.argv[0] est le nom du script, sys.argv[1] le premier argument, etc. (leçon 3.1 : le module argparse fait cela proprement).
5. Rendre un script exécutable
Sous Linux, on peut lancer un script comme une commande, sans écrire python3 devant. Il faut deux choses :
- une première ligne shebang qui indique l'interpréteur ;
- le droit d'exécution.
#!/usr/bin/env python3
print("Sauvegarde du serveur web…")
chmod +x sauvegarde.py
./sauvegarde.py
#!/usr/bin/env python3 cherche python3 dans le PATH : c'est plus portable que #!/usr/bin/python3, et cela respecte l'environnement virtuel activé. Attention, le fichier doit avoir des fins de ligne Unix (LF) : un fichier enregistré sous Windows (CRLF) provoque l'erreur /usr/bin/env: 'python3\r': No such file or directory.
6. Les environnements virtuels
Le problème
Le site de réservation d'un riad utilise la version 1 d'une bibliothèque ; l'outil de facturation, sur le même serveur, exige la version 2. Avec une seule installation de Python, l'un des deux casse. Et installer des paquets dans le Python du système risque de casser des outils de la distribution.
La solution : un dossier par projet
cd ~/projets/facturation
python3 -m venv .venv # crée le dossier .venv
source .venv/bin/activate # Linux / macOS
# .venv\Scripts\activate # Windows
(.venv) $ which python
/home/sara/projets/facturation/.venv/bin/python
(.venv) $ deactivate # revenir au Python du système
venvcopie (ou relie) l'interpréteur avec lequel vous l'avez lancé :python3.12 -m venv .venvdonne un environnement 3.12 ;- le nom
.venvest la convention : caché, explicite, et il ne se confond pas avec un fichier.envde configuration ; - activer un environnement modifie seulement le shell courant (le
PATHet l'invite) ; - sans activer, on peut appeler directement
.venv/bin/python script.py: c'est ce qu'on fait dans une tâche cron ou une unité systemd ; - le dossier
.venvne se copie pas d'une machine à l'autre et ne va jamais dans Git (ajoutez-le à.gitignore).
Pour savoir, depuis Python, si l'on est dans un environnement virtuel :
import sys
print(sys.prefix) # le dossier de l'environnement
print(sys.base_prefix) # le Python d'origine ; différent de sys.prefix dans un venv
7. Installer des paquets avec pip
pip télécharge les paquets depuis le PyPI (Python Package Index). Utilisez la forme python -m pip : vous êtes sûr d'utiliser le pip du Python actif.
(.venv) $ python -m pip install requests # dernière version
(.venv) $ python -m pip install "requests==2.32.3" # version précise
(.venv) $ python -m pip install --upgrade requests # mettre à jour
(.venv) $ python -m pip list # paquets installés
(.venv) $ python -m pip show requests # détails d'un paquet
(.venv) $ python -m pip uninstall requests
requirements.txt
Pour qu'un collègue (ou le serveur de production) retrouve exactement les mêmes versions :
(.venv) $ python -m pip freeze > requirements.txt # figer les versions
(.venv) $ cat requirements.txt
certifi==2024.8.30
requests==2.32.3
…
# sur l'autre machine :
(.venv) $ python -m pip install -r requirements.txt
requirements.txt va dans Git, le dossier .venv non.
L'erreur « externally-managed-environment »
Sur Debian 12, Ubuntu 23.04 et plus récents, pip install hors environnement virtuel est refusé avec le message externally-managed-environment. Ce n'est pas un bug : la distribution protège son Python. La bonne réponse est de créer un venv, pas d'ajouter --break-system-packages.
8. Un éditeur
N'importe quel éditeur de texte suffit, mais un éditeur qui comprend Python vous fera gagner beaucoup de temps : coloration, indentation automatique à 4 espaces, détection des erreurs. VS Code (avec l'extension Python) et PyCharm Community sont gratuits. Sur un serveur, vim ou nano suffisent pour de petits scripts.
Pièges fréquents
pythoncontrepython3: sur beaucoup de Linux,pythonn'existe pas ou désigne autre chose. Écrivezpython3(oupythonseulement dans un venv activé).- Installer avec
sudo pip install: vous modifiez le Python du système et risquez de casser des outils. Toujours un venv. - Oublier d'activer le venv : le paquet s'installe ailleurs et
import requestséchoue avecModuleNotFoundError. Vérifiez avecwhich python. - Mélanger tabulations et espaces : erreur
TabErrorouIndentationError. 4 espaces, partout.
Lab
Votre lab tourne sur une machine avec Python 3.12 et sa bibliothèque standard, sans accès à Internet (donc pas de pip install d'un paquet distant). Vous allez :
- écrire
/root/bonjour.py, votre premier script ; - le rendre exécutable avec un shebang et
chmod +x; - écrire
/root/version.pyqui lit la version viasys.version_info; - créer l'environnement virtuel
/root/projet/.venv; - prouver que vous utilisez bien le
pipde cet environnement.
Pour écrire un fichier sans éditeur :
cat > /root/bonjour.py <<'EOF'
print("Marhaba, MasterLinux !")
EOF
Quiz
- Quelle commande lance l'interpréteur interactif sous Linux ? Et sous Windows ?
- Que fait la ligne
#!/usr/bin/env python3en haut d'un script ? - Pourquoi créer un environnement virtuel par projet ?
- Pourquoi écrire
python -m pip installplutôt quepip install? - Quel fichier permet de réinstaller exactement les mêmes versions de paquets sur un autre serveur, et quel dossier ne faut-il jamais mettre dans Git ?
Réponses
python3sous Linux ;py(le lanceur) sous Windows.- C'est le shebang : quand le script est lancé directement (
./script.py, avec le droit d'exécution), le système utilise lepython3trouvé dans lePATHpour l'exécuter. - Pour que chaque projet ait ses propres versions de bibliothèques, sans conflit entre projets et sans toucher au Python du système.
- Parce que
python -m piputilise à coup sûr le pip de l'interpréteur actif (celui du venv), alors que la commandepippeut désigner un autre Python. requirements.txt(produit parpython -m pip freeze) ; le dossier.venvne va jamais dans Git.
Sources de référence : tutoriel officiel Python en français (licence PSF). Texte original MasterLinux.