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

Python3.6.5中如何列出已导入顶级模块及版本?求类似R sessionInfo()方案

解决Python中类似R sessionInfo()的模块版本查看需求

我懂你的痛点!之前那些方案要么漏了不少你实际导入的模块,要么把系统自带的一堆无关模块都列出来,确实闹心。给你两个实用的方法,精准列出你自己导入的顶级模块,还能获取它们的版本信息,在Python3.6.5上亲测有效:

方法一:遍历全局命名空间(适合直接import的模块)

这个方法会直接扫描你当前代码里显式导入的模块,只保留顶级模块(排除numpy.random这类子模块),还会跳过系统内置的下划线开头模块:

import sys
import types

def session_info():
    print("已导入的顶级模块及版本:")
    # 遍历全局空间中的所有对象
    for name, obj in globals().items():
        # 筛选符合条件的模块:是模块对象、顶级模块、非系统内置下划线开头模块
        if isinstance(obj, types.ModuleType) and '.' not in obj.__name__ and not obj.__name__.startswith('_'):
            try:
                # 尝试获取版本信息
                version = obj.__version__
                print(f"- {obj.__name__}: {version}")
            except AttributeError:
                # 有些模块没有__version__属性,做容错处理
                print(f"- {obj.__name__}: 无法获取版本信息")

# 使用示例
import numpy
import pandas
session_info()

方法二:对比初始模块列表(更全面,支持各种导入方式)

如果你用了from ... import ...这类导入方式,方法一可能会漏掉模块,这个方法通过对比脚本启动时的初始模块和当前模块,精准捕捉所有你后续加载的模块:

import sys

# 务必放在脚本最开头,记录程序启动时默认加载的模块
initial_modules = set(sys.modules.keys())

# 这里放你实际的导入代码
import numpy
import pandas
from sklearn import linear_model

def session_info():
    print("已导入的顶级模块及版本:")
    # 计算后续新增的模块
    imported_modules = set(sys.modules.keys()) - initial_modules
    for mod_name in sorted(imported_modules):
        # 筛选顶级模块,排除子模块和系统内置模块
        if '.' not in mod_name and not mod_name.startswith('_'):
            mod = sys.modules[mod_name]
            try:
                version = mod.__version__
                print(f"- {mod_name}: {version}")
            except AttributeError:
                print(f"- {mod_name}: 无法获取版本信息")

# 调用函数查看结果
session_info()

这两个方法都能帮你实现类似R中sessionInfo()的效果,既不会漏模块,也不会显示一堆无关的系统模块,完全适配你的Python3.6.5环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:13:58