You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IPython中如何单独列出已导入模块?已尝试locals和globals需手动查找

如何在IPython中单独列出已导入的模块

嘿,我来帮你搞定这个问题!你之前用globals()和locals()得到的结果确实需要手动筛选,不过我们可以用更高效的方法直接提取已导入的模块:

方法1:通过类型自动筛选命名空间中的模块

Python里的模块对象都属于types.ModuleType类型,我们可以利用这一点从全局命名空间里精准筛选:

首先确保已经导入types模块(如果还没导入的话),然后用列表推导式提取:

import types
# 提取所有已导入模块的名称
imported_module_names = [name for name, obj in globals().items() if isinstance(obj, types.ModuleType)]
print(imported_module_names)

# 如果想直接查看模块对象本身,可以这样
imported_modules = [obj for name, obj in globals().items() if isinstance(obj, types.ModuleType)]
for mod in imported_modules:
    print(f"模块名称: {mod.__name__}, 路径: {mod.__file__}")

这样就能得到当前全局命名空间里所有你显式导入的模块,不用手动翻找。

方法2:用IPython专属魔法命令(更便捷)

IPython自带了专门的魔法命令,直接就能查看已导入的模块,完全不用写自定义代码:

  • 运行%who module:会以整洁的格式列出当前命名空间中的所有模块名称
  • 运行%who_ls module:会返回一个包含模块名称的列表,方便你后续用代码处理

举个例子,执行%who module的输出可能是这样:

types  numpy  pandas  matplotlib

小补充:区分“已导入”和“已加载”的模块

如果你好奇Python解释器背后加载了哪些模块(包括那些被其他模块间接导入的系统模块),可以用sys.modules,不过它包含的内容会非常多,大部分是你没主动导入的系统模块。如果只是要找自己手动导入的模块,前面两种方法就完全够用啦。

内容的提问来源于stack exchange,提问作者Wizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:18:05