Czy istnieje prosty sposób na wyświetlenie nazw wszystkich modułów w pakiecie bez używania __all__
?
Na przykład, biorąc pod uwagę ten pakiet:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
Zastanawiam się, czy istnieje standardowy lub wbudowany sposób zrobienia czegoś takiego:
>>> package_contents("testpkg")
['modulea', 'moduleb']
Podejście ręczne polegałoby na iteracji ścieżek wyszukiwania modułów w celu znalezienia katalogu pakietu. Następnie można by wyświetlić listę wszystkich plików w tym katalogu, odfiltrować pliki py / pyc / pyo o unikatowych nazwach, usunąć rozszerzenia i zwrócić tę listę. Ale wydaje się, że to sporo pracy w związku z czymś, co mechanizm importu modułów już wykonuje wewnętrznie. Czy ta funkcjonalność jest gdzieś ujawniona?