Как упомянуто @wRAR, Загрузка модуля может подразумевать выполнение любого количества кода, которое может занять любое количество времени . С другой стороны, модуль будет загружен только один раз, и любая последующая попытка импорта обнаружит присутствующий модуль в os.sys.modules
и ссылку на него.
В среде Django в режиме отладки модули удаляются из AppCache
Django и фактически реимпортируются только после их изменения, что вы, вероятно, не будете делать с ipdb
, поэтому в дело не должно быть проблемой.
Однако в случаях, когда это может быть проблемой, есть несколько способов обойти это. Предположим, у вас есть пользовательский модуль, который вы все равно используете для загрузки, вы можете добавить к нему функцию, которая импортирует ipdb
только тогда, когда вам это нужно:
# much used module: mymodule
def set_trace():
import ipdb
ipdb.set_trace()
в модуле, который вы хотите использовать ipdb.set_trace
:
import mymodule
mymodule.set_trace()
или в верхней части модуля используйте переменную кросс-модуля __debug__
:
if __debug__:
from ipdp import set_trace
else:
def set_trace(): return