Я разработал механизм конфигурации в Python, где определенные объекты могут работать особым образом для определения проблем в нашем домене.
Пользователь указывает проблему, используя эти объекты в «файле конфигурации».Например:
# run configuration
CASES = [
('Case 1', Item('item1') + Item('item2') + Item('item3')),
('Case 2', Item('item1') + Item('item4')),
]
DATA = {
'Case 1' = {'Piece 1': 'path 1'},
'Case 2' = {'Piece 1': 'path 2'},
}
Объекты Item
, конечно, определены в определенном модуле.Чтобы использовать их, вы должны выполнить оператор import
: from models import Item
(конечно, мой фактический импорт более сложен, а не один).
Я бы хотел, чтобы пользователь просто написалпредставленная конфигурация, без необходимости что-либо импортировать (пользователи очень легко могут это забыть).
Я подумал о том, чтобы прочитать файл как текст и создать вторичный текстовый файл со всеми необходимыми импортами вверху, записать его в файл и импортировать этот файл, но это выглядит неуклюже.
Любой совет?
Редактировать:
Рабочий процесс моей системы несколько похож на Django, в котором пользователь определяет «Настройки» в файле Python и запускает скрипт, который импортируетэтот файл настроек и делает с ним дела.Именно здесь я хотел бы, чтобы эта функциональность говорила Python: «учитывая это пространство имен (где Item
означает что-то конкретное), пользователь предоставит сценарий - запустите его и передайте мне результат, чтобы я мог порождать различные прогоны».