为什么没有导入的模块系统模块'在Python 3中?

2024-04-26 02:32:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读how to check if a python module has been imported,说明似乎很清楚,请检查sys.modules中的模块。这与我在Python2中所预期的一样,但在Python3(测试了3.5和3.6)时就不一样了。例如:

Python 3.6

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

Python 2.7

^{pr2}$

我注意到,itertools在python3sys.modules dict<module 'itertools' (built-in)>)中被描述为“内置的”,而不是在python2中,所以可能这就是它在导入之前位于sys.modules中的原因,但是它是not listed as a built-in。无论如何,由于itertools仍然需要在Python3中导入,我将非常感谢您的解释。在


Tags: 模块toinmodulesifchecksyspython3
2条回答

它们是进口的,只是不是你的。解释器启动的哪些部分导致模块被加载并不重要,但您可以根据需要跟踪可能的路径。例如,itertools是由^{}导入的

from itertools import islice

^{}导入:

^{pr2}$

^{}导入:

import functools as _functools

^{}导入:

import types

这是在解释器启动时启动的,因为它是导入的大部分实现所在。在

在python3中,itertools扩展实际上编译成了Python的主二进制文件,而不是python2。如果你做一个

import sys

然后

^{pr2}$

很明显。在Python2.x控制台中执行完全相同的步骤会导致False。在

As per the docsbuiltin_module_names编译到这个Python解释器中的模块组成。在

相关问题 更多 >