Coucou Quentin et la ML,

J'ai tenté d'ajouter un moyen de charger des extensions, mais ça ne fonctionne pas.

Que je mette mon fichier MyExtension1.py de test dans le dossier racine du projet ou dans le sous-dossier Space, je me prends une ModuleNotFoundError... si quelqu'un sait comment importlib.import_module marche ?


En fait, tout va dépendre de l'endroit où est situé ton module "MyExtension1.py".

S'il est situé à l'intérieur du sous-dossier "space", avec __main__.py etc., c'est relativement simple.

import importlib
mod = importlib.import_module ("MyExtension1")
# Ou encore plus simple.
import MyExtension1 as mod
# ou s'il est dans un sous-dossier :
mod = importlib.import_module ("nomPackage.MyExtension1")
# Ou encore plus simple :
from package import MyExtension1 as mod
# L'objet mod sera alors en mesure d'exploiter les différents objets figurant dans le module "MyExtension1.py".


Toute fois, si le module "MyExtension1.py" est situé à la racine du projet, avec les fichiers lng, ini etc., il faudra utiliser le chemin absolu comme suit .

D'ailleurs, ce chemin absolu est déjà disponible dans la classe Application du module __main__ grâce à la variable d'instance self.dir que tu as déja créée.

import importlib
import os
import sys
from pathlib import Path
# On cible le module actuellement exécuté.
path=Path(sys.argv[0])
# On pointe vers le chemin absolu du dossier racine, qui comporte les fichiers lng, ini, etc.
path=str(path.parent.resolve())
# Maintenant, on va supposer que l'on dispose d'un module nommé "MyExtension1.py" à la racine, avec les fichiers lng, ini, etc.
path = os.path.join(path, "MyExtension1.py")
spec=importlib.util.spec_from_file_location("myModule", path)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
# L'objet mod sera alors en mesure d'exploiter les différents objets figurant dans le module "MyExtension1.py".


Voila, en espérant que ça te rendra ne serait-ce qu'un tout petit service en échange de ceux que tu nous as tant rendus...

Bien amicalement,
Abdel.

Progliste :
Pour se d�sinscrire de la liste : 
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/       

Je vous rappelle que les pièces jointe sont activés leur taille est limité à 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je 
vous r�pondrez en priv�.
        
        

Répondre à