Как я проверяю, импортировал ли я модуль куда-нибудь в коде?
if not has_imported("sys"):
print 'you have not imported sys'
Причина, что я хотел бы проверить, импортировал ли я уже модуль, состоит в том, потому что у меня есть модуль, который я не хочу импортировать, потому что иногда он портит мою программу.
Тест для имени модуля в sys.modules
словарь :
import sys
modulename = 'datetime'
if modulename not in sys.modules:
print 'You have not imported the {} module'.format(modulename)
От documenation:
Это - словарь, который отображает имена модуля к модулям, которые были уже загружены.
К принятым ответам sys.modules я добавил бы один протест быть осторожным относительно переименования модулей на импорте:
>>> import sys
>>> import datetime as dt
>>> 'dt' in sys.modules
False
>>> 'datetime' in sys.modules
True
sys.modules
содержит все модули, используемые где угодно в текущем экземпляре интерпретатора, и так обнаруживается, если импортировано в любом другом модуле Python.
dir()
проверки, было ли имя определено в текущем пространстве имен.
комбинация этих 2 более безопасна, чем каждый отделяется и работы как долго, Вы не определили copy
сами.
if ('copy' in sys.modules) and ('copy' in dir()):
if "sys" not in dir():
print("sys not imported!")
используйте sys.modules, чтобы протестировать, если модуль был импортирован (я использую unicodedata в качестве примера):
>>> import sys
>>> 'unicodedata' in sys.modules
False
>>> import unicodedata
>>> 'unicodedata' in sys.modules
True