Python Glossary English

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Сообщить о неточности