Existe uma maneira direta de listar os nomes de todos os módulos em um pacote, sem usar __all__
?
Por exemplo, dado este pacote:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
Estou me perguntando se existe uma maneira padrão ou integrada de fazer algo assim:
>>> package_contents("testpkg")
['modulea', 'moduleb']
A abordagem manual seria iterar pelos caminhos de pesquisa do módulo para encontrar o diretório do pacote. Pode-se então listar todos os arquivos nesse diretório, filtrar os arquivos py / pyc / pyo nomeados exclusivamente, remover as extensões e retornar essa lista. Mas isso parece uma quantidade razoável de trabalho para algo que o mecanismo de importação de módulo já está fazendo internamente. Essa funcionalidade está exposta em algum lugar?