EricLeCodeur
Eric Le Codeur

Eric Le Codeur

Python : Modules et Packages

Python : Modules et Packages

EricLeCodeur's photo
EricLeCodeur
·Apr 11, 2022·

7 min read

Le cours accéléré Python est gratuit et sera publié ici sur dev.to. Je publierai un nouvel article tous les deux jours environ. Pour ne rien manquer, vous pouvez me suivre sur twitter :

Modules et Packages

Créer vos propres modules

Jusqu’à présent, nous avons utilisé plusieurs modules déjà inclut dans Python. Maintenant il est temps de créer nos propres modules.

Lorsque nous créons une application Python, nous n’allons pas placer tous notre code dans un seul et unique fichier. Il est possible pour des questions de lisibilité et de ré-utilisabilité de créer nos propres modules.

Qu’est-ce qu’un module Python ?

Python considère comme un module n’importe quel fichier avec l’extension ".py". Voici une structure de fichier qui serait possible d’avoir pour votre application

main.py
utilities.py

L’application comporte deux modules. Le module principal “main.py” et un autre module “utilities.py

Voici un exemple de leur contenu :

utilities.py

def display_message(message):
    print("******************")
    print(" " + message)
    print("******************\n")

Le fichier contient la fonction display_message() qui permet d'afficher un message

main.py

import utilities

utilities.display_message("Hello World")

Ici l’instruction “import” permet d’inclure et d’utiliser le code du fichier “utilities.py” dans le fichier en cours.

À noter que pour appeler la fonction display_message() il faut utiliser le nom du module soit : utilities.display_message()

Si on exécute main.py on obtient :

******************
 Hello World
******************

Syntaxe alternative

Il est possible d’utiliser l’instruction “import” d’une autre façon

main.py

from utilities import display_message

display_message("Hello World")

L’instruction “from” permet d’importer seulement une partie du fichier “utilities.py”. Dans ce cas-ci, seulement la fonction display_message() sera importé.

Le résultat sera le même sauf que l’appel de la fonction ne nécessite plus le nom du module.

Import avec un autre nom de module

Lors de l’import, il est possible de modifier le nom du module

import utilities as utils

utils.display_message("Hello World")

L’instruction “as” permet de modifier le nom qui sera utilisé pour l’appel.

Regrouper plusieurs modules ensemble sous un package

Lorsque l’on construit des applications d’une certaine taille, nous aurons beaucoup de modules. Certains de ces modules pourraient être regroupés ensemble (sous un même dossier) afin de rendre l’application plus logique.

Voici un exemple. Supposons que nous avons une application avec ces modules

math_add.py
math_sub.py
message_info.py
message_log.py
message_error.py

Ici notre application comporte 5 modules. 2 sont relatifs au Math et 3 autres messages.

Il serait donc peut-être plus logique de diviser l’application avec cette structure de dossier :

/math
    add.py
    sub.py

/message
    info.py
    log.py
    error.py

Ici la structure est plus logique et par conséquent sera donc plus facile à comprendre, à maintenir et à faire évoluer.

Pour utiliser cette structure en Python. Il faut aviser Python que les dossiers /math et /message sont en faite des packages Python.

Un "package" est en faite un simple dossier qui contient des modules.

Pour indiquer à Python qu’un dossier est un package il faut créer un fichier vide nommé __init__.py

/math
    __init__.py
    add.py
    sub.py

/message
    __init__.py
    info.py
    log.py
    error.py

Si le fichier __init__.py est présent dans le dossier, Python va le considérer comme un package.

Utiliser un package dans votre application

Pour faire l’“import” de ces packages dans le code de votre application, vous devez utiliser la syntaxe suivante.

import math.add

Ici Python va rendre disponible le code du fichier “add.py” inclut dans le package “math”

Utiliser des librairies crée par la communauté

Une des forces de Python est son immense communauté.

Vous avez un problème et vous cherchez à le résoudre à l’aide de Python ?

Pourquoi réinventer la roue ? Il y a de forte chance qu’un membre a déjà rencontrer ce problème et encore mieux qu’il a partagé sa solution avec la communauté.

Les packages créés par la communauté sont répertoriés sur le site https://pypi.org/ et peuvent être installés sur votre ordinateur à l’aide de l’application PIP.

Cette application permet d’installer sur votre machine la ou les librairies que vous aurez choisies.

Vérifier l’installation de PIP

À partir de la console, lancer Python avec le module PIP

python -m pip --version

ou

python3 -m pip --version

# pip 22.0.4 from /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pip (python 3.10)

Ici PIP est bel et bien installé. Si vous avez un problème quelconque, revisitez la procédure d’installation de Python au début de ce cours.

Installé et utiliser votre premier package

python -m pip install emoji

ou

python3 -m pip install emoji

Avec cette commande, le package “emoji” est maintenant installé et utilisable.

À noter que certains package sont dépendants de d’autres packages pour fonctionner. PIP va installer le package demandé mais également les autres dépendances nécessaires.

python3 - m pip list

Package    Version
---------- -------
emoji      1.7.0
pip        22.0.4
setuptools 58.1.0

La commande PIP list permet d'afficher la liste de tous les packages installés sur votre machine.

PIP a installé la dernière version par défaut

python3 -m pip uninstall emoji

python3 -m pip list

Package    Version
---------- -------
pip        22.0.4
setuptools 58.1.0

La commande pip uninstall désinstalle le package “emoji” sur votre machine.

Le package “emoji” permet d’ajouter des emoji au message imprimer dans le terminal.

Voici un exemple d’utilisation du package emoji

import emoji

print(emoji.emojize('Python is :thumbs_up:'))

# Python is 👍

Pour utiliser un package qui vous a installé, il faut faire un import.

À noter que plusieurs packages possèdent une documentation en ligne qui vous informe des fonctions disponibles et comment les utiliser.

À quel endroit sont installés les packages sur votre machine ?

Les packages installés avec PIP sont installés dans un dossier central partagé entre toutes vos applications Python.

Donc une fois qu’un package est installé sur votre machine, il n’est pas nécessaire de le réinstaller si vous en avez besoin pour une autre application.

Problème de version ?

Cette façon de procéder va un jour ou l’autre apporter un problème au niveau des versions. Par exemple votre application 1 va utiliser le packages “emoji” version 1.7 mais votre application 2 a besoin de “emoji” version 1.8

Comment éviter les problèmes de version ?

Pour éviter ce genre de problème, il existe une solution et c’est de créer un “environnement virtuel” pour chacun de vos projets.

Environnement Virtuel

Un environnement virtuel c’est un dossier dans lequel sont placés tous les fichiers nécessaires afin de faire fonctionner votre application.

Par exemple, Python, PIP et les packages de la communauté que vous utilisez dans votre application.

Enfin, cet environnement peut être re-créer sur n’importe quelle machine ou serveur et exécuter votre code avec exactement les bonnes versions de tous !

Qu’est-ce un environnement virtuel ?

Ne vous laissez pas impressionner par ce grand nom. Un environnement virtuel est simplement un dossier qui contient une version x de Python (ex 3.9) et une version x des autres packages nécessaires au bon fonctionnement de votre application.

Chaque application possède son propre environnement virtuel (dossier) afin d’y garder les librairies nécessaires a son bon fonctionnement.

Exemple de création d’un environnement virtuel

Lorsque l'on travaille sur un projet Python, on est amené à travailler avec plusieurs librairies comme FastAPI, Flask ou Django, etc.

Selon la date de création du projet. Il est possible par exemple que la librairie FastAPI ne soit pas exactement au même no de version dans les autres projets.

Comment faire pour permettre à chaque projet d'avoir sa propre version de Python et ses propres versions de librairies ?

Nous allons utiliser les environnements virtuels.

Un environnement virtuel permet d'installer Python et des librairies python dans un dossier/projet sans que cela n'affecte les autres dossiers/projets.

Python met à votre disposition un système qui permet de créer des environnements virtuels.

Une fois l'environnement créé et activé, toutes les librairies installées pourront être utilisées seulement dans l'environnement auquel ils appartiennent.

Comment créer un environnement virtuel

Normalement nous plaçons un environnement virtuel dans le dossier du projet.

Créer et accéder à un dossier pour notre projet

$ mkdir learn-python
$ cd learn-pythob

À partir de ce dossier vous pouvez maintenant créer l'environnement virtuel qui sera attaché au projet

$ python3 -m venv env

Ici on lance python3 avec l'option module venv. env est le nom que l'on donne à notre environnement virtuel.

Une fois l’environnement virtuel créé vous pouvez l'activer :

MacOS / Linux

$ source env/bin/activate

Windows

$ env\\Scripts\\activate.bat

Voilà c'est tout ! Vous avez maintenant un environnement virtuel Python créé pour votre projet. Normalement le terminal vous indiquera que votre environnement est activé en affichant son nom.

À noter que pour désactiver l'environnement virtuel vous devez exécuter

$ deactivate

Conclusion

C'est tout pour aujourd'hui, je publierai un nouvel article tous les deux jours environ. Pour être sûr de ne rien rater vous pouvez me suivre sur twitter :

 
Share this