Importer son module personnel sous python ?

Published: 18 août 2014

DMCA.com Protection Status

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