@palkokrut

Как запретить импорт определённого модуля в python-скрипте?

Пример:

Если в любом месте кода написать `import uuid` или `from uuid import <...>`, скрипт не запустится.
При этом библиотеки могут использовать `import uuid` свободно.

Существует ли способ такое сделать?
  • Вопрос задан
  • 251 просмотр
Пригласить эксперта
Ответы на вопрос 2
@angeloffy
import sys
import uuid
module_name = "uuid"
if sys.modules.get(module_name):
    raise ImportError(f"Запрет на модуль {module_name}")

В ответе: ImportError: Запрет на модуль uuid
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Как ты отличишь импорт из скрипта от импорта из библиотеки?
Можно отреагировать на импорт в момент, когда он происходит - но понять, кто его выполнил, тяжело.
И даже если ты сумеешь через анализ текущего фрейма стека понять, кто вызвал импорт - импортированный модуль будет закэширован, и скрипт потом сможет обратиться к нему через sys.modules. Так что либо запрещать импорт модуля в принципе (например, через аудит хук), либо разрешать его во всём скрипте.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы