是的,您需要某种基于pkgutil@H_419_2@或类似的东西- 这样,您可以将所有软件包都视为相同,而不管它们是放在鸡蛋还是邮编中(在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)
@H_419_2@
如何导入它们呢?您可以__import__@H_419_2@照常使用:
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
@H_419_2@