确定加载了哪些系统模块

问题描述 投票:0回答:1

我正在尝试确定加载了哪些Python系统模块:

In [1]: import sys
In [2]: l = sorted(list(sys.modules.keys()))
In [3]: 'json' in l
Out[3]: True

根据文档

这是一个字典,将模块名称映射到已加载的模块。

所以我认为 maybe

sys
导入
json
,但事实证明这是错误的:

In [4]: json.dumps({'oren': 12})
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[4], line 1
----> 1 json.dumps({'oren': 12})

NameError: name 'json' is not defined

我错过了什么?

python module
1个回答
0
投票

sys.modules
列出已加载到当前解释器进程中的每个模块。值得注意的是,它不仅列出了“系统”模块,还列出了每个加载的模块 - 无论是核心模块还是第三方模块。在加载模块之前,它也不会列出模块(通常通过其他加载模块中的 import 语句)。

这与通过

import
语句导入到当前范围的名称列表不同。只有已经导入的名称才能直接使用。 import 语句可以从模块导入特定名称(例如
from json import dumps
)和/或重命名导入(例如
import json as j
)。这两者都反映在与 import 语句范围相对应的本地符号表中,但不在 sys.modules 中 - 在这两种情况下,只有模块
json
会在 sys.modules 中。

如果您想知道当前范围可以访问哪些内容,请尝试使用

vars()
功能。这列出了范围内的每个名称,包括导入的名称。

© www.soinside.com 2019 - 2024. All rights reserved.