У меня есть небольшой внутренний DSL, написанный в одном файле Python, который вырос до такой степени, что я хотел бы разделить содержимое на несколько разных каталогов + файлов.
Новая структура каталогов в настоящее время выглядит следующим образом:
dsl/
__init__.py
types/
__init__.py
type1.py
type2.py
и каждый файл типа содержит класс (например, Type1
).
Моя проблема в том, что я хотел бы сохранить реализацию кода, использующего этот DSL, максимально простой, что-то вроде:
import dsl
x = Type1()
...
Это означает, что все важные символы должны быть доступны непосредственно в пространстве имен пользователя. Я попытался обновить файл __init__.py
верхнего уровня, чтобы импортировать соответствующие символы:
from types.type1 import Type1
from types.type2 import Type2
...
print globals()
вывод показывает, что символы импортированы правильно, но они все еще отсутствуют в коде вызывающего (код, который выполняет import dsl
). Я думаю, что проблема в том, что символы на самом деле импортируются в пространство имен 'dsl'. Как я могу изменить это так, чтобы классы также были непосредственно доступны в пространстве имен вызывающего абонента?