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