我正在阅读 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 中导入,我将不胜感激。
最佳答案
它们已经被导入,只是不是你导入的。究竟是解释器启动的哪些部分导致加载模块是不重要的实现细节,但如果需要,您可以追踪可能的路径。例如,itertools
由 reprlib
导入
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/