python - 列出作为 python 包一部分的所有模块?

标签 python module package introspection python-import

有没有一种简单的方法可以找到所有作为 python 包一部分的模块?我找到了this old discussion ,这并不是真正的决定性,但在我推出自己的基于 os.listdir() 的解决方案之前,我希望有一个明确的答案。

最佳答案

是的,你想要基于 pkgutil 或类似的东西——这样你就可以对待所有的包,不管它们是在鸡蛋里还是在 zipper 里(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

关于python - 列出作为 python 包一部分的所有模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1707709/

相关文章:

python - 在 Python 中从 CSV 转换为数组

python - 如何在 Django 中分离登录重定向 URL

angularjs - 如何包含没有类型定义的第 3 方模块( Angular 拉动刷新)

python - 对于字典中的键,如果键 ==x :

python - 如何在Python中计算趋势的陡度

java - 没有域关联的 java 包名称的约定是什么?

git - Composer 自定义包错误 : Skipped branch develop, Undefined index: name

package - 如何使用字符串在包中查找变量并更改它?

ruby - 在模块中使用 extend self

python - Python 的新增内容 : GLPK not building properly/Python ImportError