我正在读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中导入,我将非常感谢您的解释。在
它们是进口的,只是不是你的。解释器启动的哪些部分导致模块被加载并不重要,但您可以根据需要跟踪可能的路径。例如,} 导入的
itertools
是由^{由^{} 导入:
^{pr2}$由^{} 导入:
由^{} 导入:
这是在解释器启动时启动的,因为它是导入的大部分实现所在。在
在python3中,itertools扩展实际上编译成了Python的主二进制文件,而不是python2。如果你做一个
然后
^{pr2}$很明显。在Python2.x控制台中执行完全相同的步骤会导致
False
。在As per the docs,
builtin_module_names
由编译到这个Python解释器中的模块组成。在相关问题 更多 >
编程相关推荐