有没有一种直接的方法来列出包中所有模块的名称,而不使用__all__
?
例如,给定这个包:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
我想知道是否有标准或内置的方式来做这样的事情:
>>> package_contents("testpkg")
['modulea', 'moduleb']
手动方法是遍历模块搜索路径以找到包的目录。然后可以列出该目录中的所有文件,过滤掉唯一命名的 py/pyc/pyo 文件,去除扩展名,然后返回该列表。但这对于模块导入机制已经在内部做的事情来说似乎是相当多的工作。该功能是否暴露在任何地方?