Как проверить, был ли модуль Python импортирован?

Как я проверяю, импортировал ли я модуль куда-нибудь в коде?

 if not has_imported("sys"):
     print 'you have not imported sys'

Причина, что я хотел бы проверить, импортировал ли я уже модуль, состоит в том, потому что у меня есть модуль, который я не хочу импортировать, потому что иногда он портит мою программу.

62
задан 27 May 2015 в 15:59

5 ответов

Тест для имени модуля в sys.modules словарь :

import sys

modulename = 'datetime'
if modulename not in sys.modules:
    print 'You have not imported the {} module'.format(modulename)

От documenation:

Это - словарь, который отображает имена модуля к модулям, которые были уже загружены.

85
ответ дан 31 October 2019 в 13:57

К принятым ответам sys.modules я добавил бы один протест быть осторожным относительно переименования модулей на импорте:

>>> import sys
>>> import datetime as dt
>>> 'dt' in sys.modules
False
>>> 'datetime' in sys.modules
True
15
ответ дан 31 October 2019 в 13:57

sys.modules содержит все модули, используемые где угодно в текущем экземпляре интерпретатора, и так обнаруживается, если импортировано в любом другом модуле Python.

dir() проверки, было ли имя определено в текущем пространстве имен.

комбинация этих 2 более безопасна, чем каждый отделяется и работы как долго, Вы не определили copy сами.

if ('copy' in sys.modules) and ('copy' in dir()):
3
ответ дан 31 October 2019 в 13:57
if "sys" not in dir():
  print("sys not imported!")
-1
ответ дан 31 October 2019 в 13:57

используйте sys.modules, чтобы протестировать, если модуль был импортирован (я использую unicodedata в качестве примера):

>>> import sys
>>> 'unicodedata' in sys.modules
False
>>> import unicodedata
>>> 'unicodedata' in sys.modules
True
16
ответ дан 31 October 2019 в 13:57

Другие вопросы по тегам:

Похожие вопросы: