如何获得所有可用的Python模块列表?Python:模块的完整列表
我不想要模块的模块。只是在sys.path
中提供的所有模块的基本列表。
help('modules')
不是解决方案,因为我希望它可用作变量,并且它导入那些有副作用的模块。
编辑:副作用我的意思是像图书馆的http://kivy.org/ kivy,这使得使用的事实,一旦你导入它的代码被执行。
如何获得所有可用的Python模块列表?Python:模块的完整列表
我不想要模块的模块。只是在sys.path
中提供的所有模块的基本列表。
help('modules')
不是解决方案,因为我希望它可用作变量,并且它导入那些有副作用的模块。
编辑:副作用我的意思是像图书馆的http://kivy.org/ kivy,这使得使用的事实,一旦你导入它的代码被执行。
pkgutil - 公用事业支持包
这将产生一个元组上sys.path的所有子模块:
pkgutil.iter_modules()
,看看有什么装,看:
sys.modules
“这是一个将模块名称映射到 已加载模块的字典”
加载的模块列表:
sys.modules.keys()
“已经被加载”。 OP希望所有可加载模块。 – liori 2012-03-30 18:06:45
编辑第一个答案 – 2012-03-30 18:15:54
@jsbueno。 pkgutil * not *如何回答这个问题? afaict,它给出了他所要求的:“sys.path中所有可用模块的列表”。 – 2012-03-30 18:44:20
使用了Python的走来安装外部脚本 “是pydoc”:在命令行中键入 :
$ pydoc modules
是pydoc可以从内Python的使用为好,让它走一切可用的方法之一是:
all_mod = []
pydoc.ModuleScanner().run(callback=(lambda *a: all_mod.append(a[1])), onerror=lambda *a:None)
print all_mod
一个好主意,但是它会导入这些模块(如果你已经安装了'kivy',可能会产生副作用 – 2012-03-30 19:18:09
pydoc会手动检查所有可用的文件,然后导入它们 - 如果你不想导入部分,我想你必须查看pydoc代码并从中复制才能看到所有可用的模块(包括zip文件和蛋中的模块)。 – jsbueno 2012-03-30 20:27:33
我看不出这是一个重复的问题,因为'pkgutil'甚至没有被提及另一个线程,这里有一个明确的限制:**没有副作用!** – 2015-12-19 13:21:10