如何列出导入的模块?
如何枚举所有导入的模块?
例如我想从这个代码得到['os','sys']
import os import sys
import sys sys.modules.keys()
为当前模块获取所有导入的近似值将是检查模块的globals()
:
import types def imports(): for name, val in globals().items(): if isinstance(val, types.ModuleType): yield val.__name__
这不会返回本地导入,也不会像from x import y
那样from x import y
非模块from x import y
。 请注意,这会返回val.__name__
所以如果您使用import module as alias
,您将获得原始模块名称; 产量的名字,而不是如果你想别名。
findsys.modules
与globals
的交集:
import sys modulenames = set(sys.modules)&set(globals()) allmodules = [sys.modules[name] for name in modulenames]
print [key for key in locals().keys() if isinstance(locals()[key], type(sys)) and not key.startswith('__')]
如果你想从脚本之外做到这一点:
from modulefinder import ModuleFinder finder = ModuleFinder() finder.run_script("myscript.py") for name, mod in finder.modules.iteritems(): print name
这将打印所有由myscript.py加载的模块。
这实际上是相当不错的:
import sys mods = [m.__name__ for m in sys.modules.values() if m]
这将创build一个可导入模块名称的列表。
此代码列出了您的模块导入的模块:
import sys before = [str(m) for m in sys.modules] import my_module after = [str(m) for m in sys.modules] print [m for m in after if not m in before]
如果你想知道在新的系统上安装哪些外部模块来运行你的代码,而不需要一次又一次的尝试,这应该是有用的。
它不会列出从它导入的sys
模块或模块。