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())