Python : scripts, modules, packages et bibliothèques
Python définit et utilise un certain nombre de termes qu’il est important de connaitre. Chacun a une signification bien précise et leur utilisation ne devrait entrainer aucune ambiguïté de compréhension.
Cependant, on voit souvent une mauvaise utilisation de ceux-ci en particulier de la part de ceux qui connaissent d’autres technos. Et c’est normal car certains termes sont utilisés différemment.
Ce court article a simplement pour but de rappeler la définition des termes utilisés pour la structure de projets : sources, script, modules, packages…
Vous écrivez votre code dans des fichiers source Python. Un fichier source est un fichier texte avec une extension .py. Python identifie les fichiers source sur ces critères. Omettez par exemple l’extension, Python ignorera ce fichier.
Un script est un fichier Python destiné à être exécuté. Ce ficher peut contenir des fonctions ou des classes mais il a surtout des instructions pour faire quelque chose.
Un module est un fichier Python destiné à être importé soit dans un script soit dans d’autres modules. Un module contient donc principalement des ressources tel que des fonctions, classes ou variables destinés à être utilisées par les fichiers qui l’importent.
Si votre programme est composé de plus d’un fichier source, il faut l’organiser.
Un package est un répertoire contenant un fichier nommé __init__.py. Ce répertoire est destiné à contenir des ressources Python, c’est à dire des fichiers source ou d’autres packages. C’est aussi une structure navigable par l’interpréteur. L’interpréteur saura retrouver des ressources dans une arborescence de packages, pas dans une arborescence de répertoires.
Une bibliothèque, ou library en anglais, est un terme qui référence le code qui est en dehors de votre projet. Vous utilisez des bibliothèques pour votre projet. Vous utilisez du code de la bibliothèque standard ou d’une bibliothèque comme Numpy quand vous l’importez.
Pour finir, votre projet est simplement un répertoire. Celui-ci va contenir le package de votre programme ainsi que les autres fichiers qui le composent mais j’y reviendrai dans un autre article.
Un programme Python, est donc composé d’un script et 0, 1 ou plusieurs modules. Techniquement, il n’y aucune différence entre un script et un module sinon dans leur contenu (un module peut ne contenir que des déclaration de fonctions, classes, variables et ne rien faire). La différence sémantique est dans l’usage. D’ailleurs, pour aller plus loin, vous pouvez avoir un fichier source qui peut, dans un programme, être un script et dans un autre, un module. C’est dans ce type de fichiers source que l’on trouve l’idiome :
if __name__ == "__main__": ...
Le code dans ce bloc sera exécuté si le fichier source est le script (et porte le nom __main__). Importé, ce code ne sera pas exécuté.
Faites également bien attention au contraintes pour identifier fichier source et package. Beaucoup de bibliothèques Python utilisent l’introspection (la découverte de l’arborescence et du contenu du code) et ne peuvent donc naviguer que dans des packages et des sources.
Si vous avez aimé ce post, n’hésitez pas à laisser un commentaire ci-dessous ou sur la page Facebook 😉
À propos de... Darko Stankovski
iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.
1 réponse
[…] Une fonction n’est pas un programme et encore moins, dans le domaine Python, un script. Dans le monde Python, le script est le programme principal, celui qu’on exécute. J’avais d’ailleurs détaillé ce vocabulaire. […]