Питон: Как заблокировать пользователя от вызова модуля через другой модуль(приписав его)?

#python #python-3.x #exec #python-3.9

Вопрос:

У меня os в модуле есть библиотека python. Однако я не хочу, чтобы пользователь звонил os вот так: my_module.os . Мне нужно это ограничение exec() , чтобы разрешить пользователям использовать только указанные модули. Может быть, с этим можно покончить AST . Как правильно проверить код, чтобы найти похожие ситуации? Или это невозможно?

Ответ №1:

Вы можете создать my_module пакет python со следующей структурой.

 my_module/
|-- __init__.py
|-- my_module.py
 

Например my_module.py , имеет следующую структуру.

 import os

def function_one():
.
.
.


def function_two():
.
.
.
 

Теперь внутри __init__.py

 from my_module import function_one, function_two
 

Теперь, когда вы импортируете my_module в a example.py , вы сможете использовать только function_one и function_two .

example.py файл:

 import my_module

my_module.function_one()    #runs without issues

my_module.os    #throws attribute error