Python 3.3+importlibфункция
importlib.invalidate_caches()
перезагрузка и кэши
Сбрасывает кэши поиска модулей, чтобы import увидел файлы, созданные уже после запуска программы.
Синтаксис
importlib.invalidate_caches()
Поисковик модулей запоминает содержимое каталогов из sys.path и перечитывает его по времени изменения каталога, а у него грубая точность. Если программа сама пишет .py и тут же его импортирует, импорт может не найти файл — ModuleNotFoundError на существующем файле. Вызов перед таким импортом это устраняет; модули, уже лежащие в sys.modules, он не перезагружает — для этого reload.
Примеры
import importlib, sys
sys.path.insert(0, '.')
try:
import fresh_mod
except ModuleNotFoundError:
print('ещё нет') # → ещё нет
with open('fresh_mod.py', 'w') as f:
f.write('A = 5\n')
importlib.invalidate_caches() # без этого импорт может не увидеть файл
import fresh_mod
print(fresh_mod.A) # → 5
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности