> Les bases > Modules et classes > Importations
Importations
Pour importer un module qui ne se trouve pas dans un directory canonique, faire : sys.path.append('/myDir') où /myDir est le directory contenant le module, et ceci avant de faire l'import.
On suppose une arborescence sur le disque :
myPackage/
__init__.py
mySubPackage/
__init__.py
myModule.py
myModule2.py
- Quand on importe un module, le fichier __init__.py est exécuté.
- Pour importer myModule, il faut faire : import myPackage.mySubPackage.myModule : il faudra complètement qualifier les appels : myPackage.mySubPackage.myModule.
- On peut aussi faire : from myPackage.mySubPackage import myModule : cette fois, myModule est disponible directement sans être complètement qualifié.
- on peut même faire : from myPackage.mySubPackage.myModule import myFunc pour importer la fonction myFunc du module myModule.
- on fait souvent : from myPackage.mySubPackage.myModule import MyClass pour importer la classe MyClass qui se trouve dans myModule.
- On peut aussi importer un package : from myPackage import mySubPackage et accéder alors au module par mySubPackage.myModule.
Quand on fait
from myPackage.mySubPackage import * :
- par défaut, ça importe juste le package myPackage.mySubPackage.
- si le fichier myPackage/mySubPackage/__init__.py définit la variable __all__, cette variable donne la liste des packages ou des fonctions/classes à importer.
Imports à l'intérieur d'un package : si myModule.py et myModule2.py sont au même niveau, on peut importer myModule2 dans myModule en faisant simplement import myModule2 (ou from myModule2 import myFunc2 pour importer la fonction myFunc2 de myModule2 dans myModule)
import numpy as np : importe le package en définissant un alias au lieu du nom original. Pour référencer les objets dans ce package, on utilise alors l'alias et pas le nom original :
- np.array([1, 2]) marche alors.
- numpy.array([1, 2]) ne marche pas.
Pour savoir où se trouve un package, par exemple le package numpy : faire python -c 'import numpy; print(numpy.__path__)' (par exemple, donne ['/usr/lib/python2.7/dist-packages/numpy']).
Import d'un module dans une fonction, mais de façon à ce qu'il soit quand même défini globalement (sinon, défini seulement dans la fonction) :
def myFunc():
global numpy
import numpy
Pour supprimer les warnings :
Pour enlever les FutureWarnings : from warnings import simplefilter; simplefilter(action = 'ignore', category = FutureWarning)
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert