← retour aux snippets

pkgutil.iter_modules: découvrir des plugins/modules

Lister les modules dans un dossier pour du discovery simple.

python discovery #pkgutil#plugins

objectif

Lister les modules dans un dossier pour du discovery simple.

code minimal

import pkgutil, tempfile, pathlib, sys
with tempfile.TemporaryDirectory() as tmp:
    d = pathlib.Path(tmp)/"plugins"; d.mkdir()
    (d/"a.py").write_text("x=1\n", encoding="utf-8")
    mods = [m.name for m in pkgutil.iter_modules([str(d)])]
    print("a" in mods)  # attendu: True

utilisation

import pkgutil, pathlib
path = [str(pathlib.Path(".").resolve())]
names = [m.name for m in pkgutil.iter_modules(path)][:3]
print(isinstance(names, list))

variante(s) utile(s)

import pkgutil
print(callable(pkgutil.iter_modules))

notes

  • Combinez avec importlib pour charger dynamiquement ces modules.
  • Ne parcourez que des dossiers de confiance (sécurité).