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