Предположим, у меня есть проект с такой структурой папок.
/project
__init__.py
main.py
/__helpers
__init__.py
helpers.py
...
Модуль helpers.py
определяет некоторое исключение и содержит некоторый метод, вызывающий это исключение.
# /project/__helpers/helpers.py
class HelperException(Exception):
pass
def some_function_that_raises():
raise HelperException
С другой стороны, мой модуль main.py
определяет свои собственные исключения и импортирует методы, которые могут вызвать исключение из helpers.py
.
# /projects/main.py
from project.__helpers.helpers import some_function_that_raises
class MainException(Exception):
pass
Теперь я не хочу, чтобы пользователям приходилось делать from project.__helpers.helpers import HelperException
, если они хотят поймать это исключение. Было бы разумнее иметь возможность импортировать исключение из общедоступного модуля, который его вызывает.
Но я не могу просто переместить HelperException
в main.py
, что привело бы к циклическому импорту.
Каков наилучший способ разрешить пользователям импортировать все исключения из main.py
, пока те возникают в /__helpers
?