@Dima_E

Как повторно импортировать модуль?

При вводе изменений, нужно повторно импортировать модуль, но при повторном импорте модуль игнорируется, почему ?
Пример:
import time,traceback,sys,os

file1 = os.path.abspath(os.path.dirname(sys.argv[0]))
sys.path.append(r"{}".format(file1))

if __name__ == '__main__':
    while True:
        try:
            time.sleep(3)
            import Testt
            time.sleep(3)
            print("выход")
        except:
            traceback.print_exc()

Код что импортируется просто принтит текст.
Вывод у него будет следующий:
>>>Работает
>>>выход
>>>выход
>>>выход
и тд.
"Работает" - это строка из импортируемого кода
Почему так происходит и как это исправить ?
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
@Miit
async awaiter
Если вам нужно прям заново вызывать модуль, то сперва вам нужно удалить его из объекта modules в стандартной библиотке sys, а затем заново вызвать импорт. Либо можете использовать функцию reload из модуля importlib.
Во всех остальных случаях, лучше просто объявить функцию в модуле, которую вам необходимо вызывать.

Примеры

import sys
import some_module

del sys.modules['some_module']
import some_module

from importlib import reload
import some_module
reload(some_module)

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы