J'ai un problème un peu tordu au sein de mon projet. Cela concerne l'axiome qui dit que de multiple commandes 'import' ne déclenche qu'une seule et unique exécution fichier. En fait, il y a un cas ou cela n'est pas vrai et forcément, je suis dedans. cf ICI pour une explication détaillée.
J'ai fais une première appli (Main.py) qui marche et a un certain nombre de modules et packages inclus. Cette petite appli est incluses dans un projet plus gros (MainGlobal.py). Voila comment c'est architecturé :
Mon problème c'est que l'application 'Main.py' lancée seule marche très bien, mais quand j'import le module 'Main' dans 'MainGlobal.py' je me retrouve dans le cas ou certain de mes fichier inclues dans les packages sont importés plusieurs fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 MainGlobal.py + src + Main.py + Pkg1 + __init__.py + ... + Pkg2 + __init__.py + ... + ... ...
Entendez par la que le contenu du fichier est exécuté plusieurs fois, exactement comme s'il y avait des reload() a la place des import. Et cela génère des incohérences dans mes structures de donnée qui ne sont pas faites pour des initialisations multiples.
Voici une solution qui marche mais est globalement assez moche (et la je suis gentil )
-Dans le sys.path, remplacer le répertoire courant (ou est situé le MainGlobal.py) par le répertoire 'src' avant les inclusions.
Cela tient vraiment du patch de fortune. Sauriez-vous comment faire ca "propre" ?
Partager