列出所有属于python软件包的模块吗?
发布于 2021-01-29 16:03:46
有没有一种直接的方法来查找python软件包中的所有模块?我已经找到了这个旧的讨论,这并不是真正的结论,但是在基于os.listdir()推出自己的解决方案之前,我希望有一个明确的答案。
关注者
0
被浏览
160
1 个回答
-
是的,您需要某种基于
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