Python:查找包中的所有包

Ram*_*hum 9 python import packages

给定一个包,我怎样才能自动找到它的所有子包?

Jam*_*ton 10

您不能依赖已加载模块的内省,因为可能尚未加载子包.假设有问题的顶级包不是egg,zip文件,扩展模块或从内存加载,你必须查看文件系统.

def get_subpackages(module):
    dir = os.path.dirname(module.__file__)
    def is_package(d):
        d = os.path.join(dir, d)
        return os.path.isdir(d) and glob.glob(os.path.join(d, '__init__.py*'))

    return filter(is_package, os.listdir(dir))
Run Code Online (Sandbox Code Playgroud)

  • 你是对的,它应该是一个星号,以便它匹配.py,.pyc和.pyo文件.就目前而言,仍然存在许多与这类事情有关的问题.我希望你没有把它用于任何重要的事情,比如导弹控制.=) (2认同)