python - 为什么在 Python 3 的 'sys.modules' 中没有导入模块?

标签 python python-2.7 python-3.x import python-import

我正在阅读 how to check if a python module has been imported说明似乎很清楚,请检查 sys.modules 中的模块.这与我在 Python 2 中预期的一样有效,但不适用于 Python 3(已测试 3.5 和 3.6)。例如:

python 3.6

>>> import sys
>>> 'itertools' in sys.modules
True

python 2.7

>>> import sys
>>> 'itertools' in sys.modules
False

我注意到,itertools在 Python 3 中被描述为“内置”sys.modules dict ( <module 'itertools' (built-in)> ),而不是在 Python 2 中,所以也许这就是它在 sys.modules 中的原因在导入之前,但它是 not listed as a built-in .无论如何,自itertools仍然需要在 Python 3 中导入,我将不胜感激。

最佳答案

它们已经被导入,只是不是你导入的。究竟是解释器启动的哪些部分导致加载模块是不重要的实现细节,但如果需要,您可以追踪可能的路径。例如,itertoolsreprlib 导入

from itertools import islice

functools 导入:

from reprlib import recursive_repr

types 导入:

import functools as _functools

importlib 导入:

import types

它在解释器启动时被引导,因为它是大多数导入实现的地方。

关于python - 为什么在 Python 3 的 'sys.modules' 中没有导入模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42305728/

相关文章:

python - 如何将一系列数字插入sqlite3

python - Python 如何以及何时确定变量的数据类型?

python - 带参数和不带参数的上下文装饰器

python - 为什么我不能迭代通过 __getattr__ 委托(delegate)给可迭代对象的对象?

python - 在 Python 中解压字节值

python - 如何使用正则表达式提取荷兰邮政编码 (Python)

python-3.x - 在 ipython 笔记本中重新加载全局变量

python - 无法使用 selenium 单击父级

交互式/非交互式运行时,Python 以不同方式导入模块

python-2.7 - 在pygame中创建一个窗口而不显示它