Hello
voila j'essaye de trouver un moyen de charger dynamiquement différents fichiers se trouvant dans un répertoire précis.
ces fichiers représenterai des modules de mon programme.
je les ai tous fait hériter d'une classe Parent afin de définir l'interface.
mais j'arrive pas à le faire charger comme il faut.
j'ai pas mal googler, mais je m'en sort pas..
je tester avec le fichier __init__.py dans le répertoire des plugin ,
et avec la fonction __import__() mais jarrive pô...
kkun peu maider pliiize?
merci!
# Un exemple
Posté par Sten Spårvagnhög (site web personnel) . Évalué à 1.
Regarde dans l'archive http://pycoincoin.free.fr/download/pycc-0.8.7.tar.gz le fichier pyc2.py, il y a une fonction import_plugins qui charge tous les modules disponibles dans le répertoire plugins/
C'est dynamique, c'est à dire que tu peux recharger les plugins ou en importer de nouveaux (via l'appel à cette fonction) alors même que l'appli est en train de tourner.
Comme toi, j'ai une classe d'interface Plugin parente.
Pour référence
pyCoinCoin : http://chrisix.free.fr/pycoincoin/
wiki doc développeur (en cours de contruction) : http://pycoincoin.free.fr/wikini/
en particulier les plugins : http://pycoincoin.free.fr/wikini/wakka.php?wiki=ModulePlugin
# No problemo
Posté par GuieA_7 (site web personnel) . Évalué à 1.
###########
from imp import load_source
from inspect import getmembers, isfunction
def filterfunc(obj) :
__if isfunction(obj) :
____return obj.__name__ == 'foobar'
f = file( 'toto.py')
mod = load_source(name[:-3], f.name, f)
f.close()
my_func = getmembers(mod, filterfunc) [0][1]
##############
Ce code ouvre le plugin nommé 'toto.py', et y cherche une fonction nommée 'foobar'. Plus qu'à appeler my_func, qui pourra te renvoyer par exemple une instance d'objet dérivant de ton Parent.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.