列出所有属于python软件包的模块吗?

发布于 2021-01-29 16:03:46

有没有一种直接的方法来查找python软件包中的所有模块?我已经找到了这个旧的讨论,这并不是真正的结论,但是在基于os.listdir()推出自己的解决方案之前,我希望有一个明确的答案。

关注者
0
被浏览
160
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是的,您需要某种基于pkgutil或类似的东西-
    这样,您可以将所有软件包都视为相同,而不管它们是放在鸡蛋还是邮编中(在os.listdir都不起作用的地方)。

    import pkgutil
    
    # this is the package we are inspecting -- for example 'email' from stdlib
    import email
    
    package = email
    for importer, modname, ispkg in pkgutil.iter_modules(package.__path__):
        print "Found submodule %s (is a package: %s)" % (modname, ispkg)
    

    如何导入它们呢?您可以__import__照常使用:

    import pkgutil
    
    # this is the package we are inspecting -- for example 'email' from stdlib
    import email
    
    package = email
    prefix = package.__name__ + "."
    for importer, modname, ispkg in pkgutil.iter_modules(package.__path__, prefix):
        print "Found submodule %s (is a package: %s)" % (modname, ispkg)
        module = __import__(modname, fromlist="dummy")
        print "Imported", module
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看