Найти - Пользователи
Полная версия: отключение импортируемых ранее модулей
Начало » Python для новичков » отключение импортируемых ранее модулей
1
Win95
Доброго времени суток!)
Возможно вопрос покажется глупым, но возможно ли отключать ранее импортированные (самописные, т.е. не стандартные) модули?
Дело в том, что мне необходимо было написать множество функций и для простоты я запихал их в отдельные модули, а затем импортировал их по ходу выполнения основного кода. К сожалению сейчас необходимо прикрутить цикл, (а модуль импортируется лишь один раз) по этому и возникла надобность временно отключать их. Возможно ли это?
fata1ex
Покажите код. Что значит “отключать модули”?

Может вы имеете в виду какой-нибудь из этих вариантов. А может вам просто достаточно будет поставить флаг isImported. Без кода можно привести с десяток таких “может”.
Win95
record - записывает файл с некоторыми параметрами, а grafic - соответственно стрит по полученному файлу график, однако думаю это не важно.

def write():
    time.sleep(int(rex[3]))
    import record
    time.sleep(int(rex[4]))
    import grafic
    print u"* файл преобразован"
def chc(event):
    i=1
    for i in range(5):
        write()
        i+=1
Смысл в том, что мне несколько раз нужно пробегать write(), а импорт я могу выполнить лишь один раз.
fata1ex
Win95, либо выносите модули из функции, либо определяйте флаг isImported.

Если очень грубо:
isImported = False
 
def foo():
    global isImported
    if not isImported:
        import module
        isImported = True
 
while len(day) > len(night):
   foo()
 
isImported = False

Если всё это завернуть в класс, то будет поприятнее. В любом случае, это не правильно. Нужно выносить импорты из функций. В некоторых случаях можно перенести импорты в цикл, но это тоже будет ужасно. В общем, при изначальном некорректном планировании структуры проекта получается бяка :)

Ещё можно написать свой контекстный менеджер.
Win95
fata1ex, спасибо за советы) но нашел такую замечательную (для меня) вещь как reload() она выгружает модуль, однако в Python 3x её кажется прикрыли) благо на 2.7 пишу)
fata1ex
Win95, долго искали-то? Я вам эту замечательную вещь прислал в первом же своём посте. Да и выполнять перезагрузку модуля при каждой итерации цикла, как минимум, некрасиво и неэффективно.
odnochlen
А почему бы не импортировать на уровне модуля?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB