Un exemple simple de gestion de plugin¶
Deux fonctions pour l’inscription du plugin et l’importation de modules python:
# utils.py
import os
def plugins_list(plugins_dirs):
""" List all python modules in specified plugins folders """
for path in plugins_dirs.split(os.pathsep):
for filename in os.listdir(path):
name, ext = os.path.splitext(filename)
if ext.endswith(".py"):
yield name
def import_plugins(plugins_dirs, env):
""" Import modules into specified environment (symbol table) """
for p in plugins_list(plugins_dirs):
m = __import__(p, env)
env[p] = m
Et maintenant utiliser import_plugins () où vous avez besoin de les utiliser!
# yourapp.py
import os
from utils import import_plugins
plugins_dirs = "plugins/:module/plugins/"
sys.path.extend(plugins_dirs.split(os.pathsep))
import_plugins(plugins_dirs, globals())