group-telegram.com/data_math/787
Create:
Last Update:
Last Update:
Хотите логировать или модифицировать поведение импортируемых модулей?
Используйте механизм sys.meta_path и свои кастомные import hooks!
Зачем это нужно:
• Автоматический патчинг сторонних библиотек
• Логирование импорта для аудита или отладки
• Подмена модулей “на лету” для тестирования или “горячих фиксов”
Пример — ловим каждый импорт и выводим имя модуля:
import sys
class ImportLoggerFinder:
def find_spec(self, fullname, path, target=None):
print(f'Импортируется: {fullname}')
return None # Не вмешиваемся, просто логируем
sys.meta_path.insert(0, ImportLoggerFinder())
# Теперь при любом импорте будет выводиться имя загружаемого модуля
import json
import math
import requests
# Вы увидите:
# Импортируется: json
# Импортируется: math
# Импортируется: requests
С помощью такого подхода можно делать глубокий аудит, динамические патчи или реализовать кастомные протоколы импорта для своих нужд. Очень мощный, но малоизвестный инструмент стандартной библиотеки!
Сохрани себе, чтобы не потерять 😎