Gibt es eine einfache Möglichkeit, die Namen aller Module in einem Paket aufzulisten, ohne sie zu verwenden __all__
?
Zum Beispiel angesichts dieses Pakets:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
Ich frage mich, ob es einen Standard oder eine integrierte Methode gibt, um so etwas zu tun:
>>> package_contents("testpkg")
['modulea', 'moduleb']
Der manuelle Ansatz besteht darin, die Modulsuchpfade zu durchlaufen, um das Verzeichnis des Pakets zu finden. Man könnte dann alle Dateien in diesem Verzeichnis auflisten, die eindeutig benannten py / pyc / pyo-Dateien herausfiltern, die Erweiterungen entfernen und diese Liste zurückgeben. Dies scheint jedoch eine Menge Arbeit für etwas zu sein, das der Modulimportmechanismus bereits intern erledigt. Ist diese Funktionalität irgendwo verfügbar?