Clique sur les titres ou les images pour en savoir plus sur les notions ci-dessous 🙂
En informatique, on se retrouve très souvent à réutiliser du code : il est donc très important de trouver une manière facile de le réutiliser (pas de copier / coller de fichier en fichier) !
Il existe de nombreuses manières de faire cela, mais en Python on utilise des "Packages" (ou paquets en français) : on va rassembler par thématique des bouts de code (des "fonctions"), et les distribuer de manière simple. On ne va pas s'intéresser à comment créer un de ces packages, mais plutôt comment les utiliser !
Une des grandes forces de Python, c'est qu'il existe de très très nombreux packages, séparés en deux catégories : ceux de la "librairie standard", présent sur toutes les installations de Python, et ceux de pip
, qu'il faudra installer manuellement si on souhaite les utiliser sur un ordinateur.
Voici quelques exemples de packages de la librairie standard :
random
: pour trouver des nombres aléatoires, que ce soit des int, des float ... Permet aussi de choisir un élément au hasard dans un tableau, ou de mélanger un tableau, etc ! (la documentation complète du module est disponible ici, en anglais uniquement)json
: permet de lire et d'écrire du JSON, un format standard d'échange d'information sur le web. Très utile quand on va vouloir dialoguer avec un site externe, ou si l'on souhaite facilement sauvegarder certaines informations sur son disque dur. Documentation du module (en français)os
: permet d'interagir avec l'Operating System (système d'exploitation, c'est à dire windows, mac ou linux) : vérifier si des fichiers existent, copier un fichier, le renommer, créer des dossiers ... Documentation du module (en français)glob
: Permet de trouver facilement des fichiers similaire (par exemple, tous les fichiers .jpg dans un dossier). On peut le faire aussi avec os, mais glob nous évite d'avoir à faire des algorithmes complexes (ce n'est pas évident de chercher dans un dossier, et ces sous dossiers !). Documentation du module (en français)Pour les modules de pip
, il en existe bien plus encore, voici quelques exemples de ceux que nous allons utiliser :
pillow
: pour manipuler des images (plus d'infos sur cette page du site)birdy
: pour accéder à l'API de twitter (plus d'infos sur cette page du site)flask
: pour créer des webapp ! (plus d'infos sur cette page du site)opencv
: pour utiliser la caméra et prendre des photos (plus d'infos sur cette page du site)requests
: pour faire des requêtes HTTP, et interroger des API web, ou faire du scraping de données (plus d'infos sur cette page du site)pip
!Si le package est dans la librairie standard, rien à faire ici !
Par contre, s'il est sur pip, alors il faut l'installer. C'est déjà fait pour les modules communs sur les ordinateurs MagicMakers ; néanmoins si tu veux utiliser un package qui n'est pas présent (ou faire l'installation sur ton ordinateur personnel), c'est très simple ! Commence par ouvrir une console (si tu ne sais plus comment faire, tu peux te référer à cette page), et tape la commande suivante :
pip install monpaquet
C'est tout, tu peux désormais l'utiliser !
Certains paquets ont un nom différent sur pip et dans python. Par exemple, pour installer opencv il faut installer "python-opencv
", et on utilisera "cv2
" dans python ! Réfère toi à la documentation des paquets si jamais tu as un soucis là dessus.
Pour utiliser un package, il va falloir demander explicitement à python de l'importer dans notre script. Python n'importe pas automatiquement tous les packages de l'ordinateur, car il peut y en avoir beaucoup (et ça peut donc prendre du temps !).
On va utiliser le mot clé import, qui peut s'utiliser de plusieurs manières :
Importer un package en entier
C'est l'utilisation la plus courante. On a accès à toutes les fonctionnalités du packages. Par contre, pour accéder à une fonction du package, il faut taper son nom devant
import random nombre = random.randint(1, 6) print(nombre) >> 3 # Un nombre entre 1 et 6 (inclus)
Les utilisations suivantes d'import
peuvent être source de bugs : si tu importes de deux paquets une fonction avec le même nom, tu vas écraser une des deux ! Utilise les avec parcimonie, et privilégie toujours l'import
"classique", vu juste au dessus !
Importer juste une fonction d'un package
On doit choisir ce qu'on veut comme fonction du package. Pratique quand on veut une fonction d'un package, et que le nom du package est long ! Pas besoin de taper le nom du package devant !
from random import randint nombre = randint(1, 6) print(nombre) >> 3 # Un nombre entre 1 et 6 (inclus)
Importer plusieurs fonctions d'un package
Comme au dessus, sauf qu'on peut choisir plusieurs fonctions !
from random import randint, shuffle nombre = randint(1, 6) print(nombre) >> 3 # Un nombre entre 1 et 6 (inclus) ages = [1, 5, 7, 1, 2, 3] shuffle(ages) print(ages) >> [3, 2, 1, 5, 7, 1] # Tableau mélangé
Importer toutes les fonctions d'un package
Cette fois-ci, toutes les fonctions sont accessibles directement, sans avoir à taper le nom du package devant.
from random import * nombre = randint(1, 6) print(nombre) >> 3 # Un nombre entre 1 et 6 (inclus) ages = [1, 5, 7, 1, 2, 3] shuffle(ages) print(ages) >> [3, 2, 1, 5, 7, 1] # Tableau mélangé nombre = choice(ages) print(nombre) >> 5 # Un élément au hasard du tableau
Si jamais tu as une erreur de type ModuleNotFoundError: No module named 'flask'
Vérifie que tu as bien installé le package, et que tu n'as pas faire d'erreur dans le nom du package (par exemple, écrit "flaske" à la place de "flask")
Télécharger et installer Python 3 ici (attention à bien cocher la case "Add Python 3.x to PATH" lors de l'installation)
Ouvrez un terminal, et exécutez la commande suivante :
pip install magic_defis
Cela installera le challenge, ainsi que toutes les dépendances nécessaires pour le trimestre.
Rappel Pour ouvrir un terminal :
Il existe des milliers d'éditeurs ; on utilise Sublime text sur tous les ordis MagicMakers, et on vous recommande donc de l'utiliser.
On va utiliser une extension afin de pouvoir exécuter facilement notre code dans Sublime : sublimeREPL. Pour cela, il faut installer PackageControl :
Sur les ordinateurs Magic Makers, l'interface de sublimeREPL est simplifiée, pour enlever les options inutiles. Si vous souhaitez faire la même chez vous :
Ensuite, allez dans le dossier "Sublime Text 3" > "Packages" > "SublimeREPL" :
On va passer directement par Sublime ; pour cela, allez dans Tools > Python > Interpréteur Python (Shell)
Note : on peut aussi le faire en utilisant le terminal windows, mais il ne gère pas les couleurs dans ce cas là ...
C'est ce qu'on utilisera 90% du temps, car c'est très pratique !
Ouvrez avec SublimeText votre fichier .py, puis allez dans Tools > Python > Python (RUN current file)
L'inconvénient majeur est qu'on ne pourra pas passer d'arguments en ligne de commande. C'est gênant pour certains scripts, en particulier pour les webapp
Cela permet de passer d'arguments en ligne de commande à notre script ! L'inconvénient, c'est qu'il faut ouvrir le terminal au bon endroit - et que c'est moins joli que dans Sublime ...
Pour ouvrir le terminal au bon endroit, ouvrez l'explorateur windows, allez dans le dossier où il y a votre script, puis ouvrez un terminal (rappel : maintenez majuscule (Shift) puis faites un clic droit dans un dossier, et choisissez l'option "Ouvrir une fenêtre de commandes ici")
Ensuite, tapez la commande suivante :
python nomdefichier.py
Si vous avez besoin de passer des arguments, c'est presque pareil :
python nomdefichier.py --img monimage.png
Vous pouvez taper les premières lettres du nom de votre fichier, puis appuyer sur "Tab" pour ne pas avoir à tout taper à la main 😉
Tout est sur cette page !