on
Les modules
Références
- Modules, consulté le 16/06/2019
Les modules
Un module est un fichier contenant les définitions des déclarations Python. Le nom du fichier est le nom du module plus l’extension .py
. Ce nom est stocké dans une variable globale __name__
.
Exemple d’un fichier fibo.py
:
# Fibonacci numbers module
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return resultv
Si on ouvre in interpréteur dans le même dossier, on peut importer ce module pour l’utiliser.
import fibo
le nom du module devient disponible dans les symboles de l’interpréteur. Il faut utiliser la notation pointé pour accéder aux fonctions du module :
fibo.fib(100)
Spécifier ce que l’on importe
from fibo import fib, fib2
Ici le nom du module n’est plus dans la liste des symboles mais les deux fonctions fib
et fib2
y sont.
On peut aussi importer tout, mais c’est une mauvaise pratique :
from fibo import *
On peut renommer les imports :
from fibo import fib as fibonacci
Exécution de modules comme des scripts
Quand un module est exécuté comme un script sa propriété __name__
vaut "__main__"
. Cela permet de prévoir un comportement différent du mode module, quand on exécute le fichier. Par exemple on va avoir un script principal qui gère les paramètres en ligne commande :
if __name__ == "__main__":
import sys
fib(int(sys.argv[1]))
Localisation des modules
quand un module est importé, python le recherche dans différents fichiers données par la valeur de sys.path
:
import sys
sys.path
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/home/personnel/pigney/.local/lib/python3.5/site-packages', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
Fichiers Python “compilés”
On trouve dans un dossier contenant des modules un sous-dossier __pycache__
. Pour chaque module du dossier il y a un fichier .pyc
équivalant dans __pycache__
. Des versions compilés des fichiers source s’y trouve. Les fichiers compilés sont chargés plus rapidement par Python. Après le chargement le temps d’exécution est le même pour les fichier compilés que pour les sources.
Modules standards
Python est livré avec un grand nombre de modules. Liste des modules de python 3
Les packages
On peut organiser plusieurs modules (sous-modules) ensembles pour former un packet (package). Ces packets regroupent plusieurs modules sous une arborescence commune.
my_pkg/
- models/
- person.py
- thing.py
- views
- fpv.py
- aerial.py
from my_pkg.fpv import camera
installation
Les packages tiers proposés par d’autres sont utilisables en les téléchargeant et en les mettant dans un des dossiers du sys.path
. Des utilitaires comme pip
nous facilite le travail.
Hébergement
Les outils comme pip
vont télécharger les packages pythons depuis l’index des packets pythons (PyPI): https://pypi.org
gestion des dépendances
Les packages peuvent être publiés à plusieurs degrés de maturité. Ils sont donc versionnés. Quand on installe un package on installe une version précise.
Ou installer les packages ?
Les packages s’installent dans l’un des dossiers de sys.path
. on peut voir 3 niveaux :
- Le niveau “système” (
C:\python3.7\lib\site-packages
,/usr/local/lib/python3.7/site-packages
, etc.) - le niveau “utilisateur” (
C:\users\Machin\....
,~/.local/lib/python3.5/site-packages/
) - Le niveau projet où les packages son gérés séparément et ne génère pas de conflits de version. Ce niveau est géré par des environnements virtuelles.
gestion des versions des packages et de python
Pour gérer efficacement les dépendances et les interpréteurs, on utilise le projet Pipenv.
Exercice facultatif
Mise en application de l’utilisation des packages avec pipenv
et utilisation d’un package de réalisation de graphiques.
Le but est de reprendre le tableur des résultats du bac 2016 pour proposer un graphique similaire à celui-ci :
Les étapes :
- Installer
pipenv
pour pouvoir gérer facilement les dépendances :pip3 install --user --upgrade pipenv
- Créer un dossier qui sera la racine du projet :
mkdir mon_projet
cd mon_projet
- Initialliser
pipenv
avec quelques packages en dépendances :pipenv install pandas xlrd matplotlib
- Créer un script
graphique_resultats.py
- Reprendre le code
pandas
vu dans les formats de fichier pour charger le tableur des résultats du bac 2016 - Filtrer les données pour n’avoir que les établissements du département et la ville de votre choix.
- Utiliser la doc de pandas sur les graphiques en épis pour réaliser le graphique.