¿Existe una forma sencilla de enumerar los nombres de todos los módulos en un paquete, sin usar __all__
?
Por ejemplo, dado este paquete:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
Me pregunto si hay una forma estándar o incorporada de hacer algo como esto:
>>> package_contents("testpkg")
['modulea', 'moduleb']
El enfoque manual sería iterar a través de las rutas de búsqueda del módulo para encontrar el directorio del paquete. Luego, uno podría enumerar todos los archivos en ese directorio, filtrar los archivos py / pyc / pyo con nombre exclusivo, eliminar las extensiones y devolver esa lista. Pero esto parece una buena cantidad de trabajo para algo que el mecanismo de importación de módulos ya está haciendo internamente. ¿Esa funcionalidad está expuesta en algún lugar?