有没有一种标准的方法来列出Python包中的模块名称?

4 浏览
0 Comments

有没有一种标准的方法来列出Python包中的模块名称?

是否有一种简单直接的方法来列出一个包中所有模块的名称,而不使用__all__

例如,给定这个包:

/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py

我想知道是否有一种标准或内置的方法来做类似于这样的事情:

>>> package_contents("testpkg")
['modulea', 'moduleb']

手动的方法是遍历模块搜索路径以找到包的目录。然后可以列出该目录中的所有文件,过滤出唯一命名的py/pyc/pyo文件,去掉扩展名,并返回该列表。但是,这似乎是对模块导入机制已经在内部执行的工作的一种相当大的工作。这个功能是否在任何地方暴露出来?

0