#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