Dans cet article on va voir comment importer son ou ses module(s) avec Python. Pour rappel, les modules sont importants pour pouvoir ensuite construire des "packages" et aussi pour éviter de se répéter (DRY principle).
Script et module(s) sous le même répertoire
Pour ce premier exemple on suppose que le programme principal "MyScript.py" et le module MyModule.py sont sous le même répertoire. Voici alors comment importer le module dans le programme principal (fichier MyScript.py):
import MyModule
MyModule.function_welcome()
avec le fichier MyModule.py:
def function_welcome():
print 'Hello World !'
L'execution de la commande:
python MyScript.py
donne alors ici comme résultat:
Hello World !
Note: il est possible de définir plusieurs modules, comme dans cet exemple (MyScript.py):
import MyModule
import MyModule2
MyModule.function_welcome()
MyModule2.function_welcome_bis()
avec MyModule2.py:
def function_welcome_bis():
print 'Hello You ! How are you ?'
Module(s) dans un sous répertoire
Maintenant considérons le cas où on souhaite placer nos modules dans un sous répertoire (intitulé par exemple MyModuleLibrary):
MyScript.py
MyModuleLibrary/
MyModule.py
MyModule2.py
Dans ce cas il est nécessaire d'ajouter un fichier intitulé obligatoirement __init__.py dans le répertoire MyModuleLibrary (voir python documentation), pour indiquer à python qu'il peut importer les modules de ce répertoire. Il est nécessaire également d'éditer le fichier __init__.py pour indiquer quels modules peuvent être importés, dans notre cas (fichier __init__.py):
__all__ = [
'MyModule',
'MyModule2']
Voici donc finalement la structure générale:
MyScript.py
MyModuleLibrary/
__init__.py
MyModule.py
MyModule2.py
avec MyScript.py:
import MyModuleLibrary.MyModule
import MyModuleLibrary.MyModule2
MyModuleLibrary.MyModule.function_welcome()
MyModuleLibrary.MyModule2.function_welcome_bis()
et MyModule.py et MyModule2.py des modules python définis dans la section précédentes (voir ci-dessus). L'execution de la commande:
python MyScript.py
donne
Hello World !
Hello You ! How are you ?
Recherches associées
Liens | Site |
---|---|
Modules | Python Documentation |
python: how to import the class within the same directory or sub directory | stackoverflow |
Loading all modules in a folder in Python | stackoverflow |
Can anyone explain python's relative imports? | stackoverflow |
Import a module from a relative path | stackoverflow |
Import python module NOT on path | stackoverflow |
What is init.py for? | stackoverflow |