Я читал how to check if a python module has been imported, и инструкции кажутся ясными, проверьте модуль в sys.modules
. Это работает, как я ожидал в Python 2, но не с Python 3 (3.5 и 3.6). Например:Почему модули, которые не были импортированы в 'sys.modules' в Python 3?
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, я был бы благодарен за объяснение.
Если какие-либо модули, которые вы * уже импортировали, необходимо импортировать самостоятельно, эти модули будут отображаться как загруженные. Возможно, зависимость была введена в Python 3, которая не существовала в Python 2. P.S. даже если модуль загружен, вам нужно «импортировать» его, чтобы сделать его доступным в текущей области. –
Я думаю, что вы сами ответили на вопрос: если 'itertools' стал встроенным, он будет загружен прямо при запуске интерпретатора. – ForceBru
- это вопрос, почему 'itertools' нуждается в импорте или почему он есть и не указан как таковой в документах? –