Ситуация
Я хочу иметь модуль, который примерно работает следующим образом:
# my_module.py
my_number = 17
from other_module import foo
my_object = foo(23)
Однако существует проблема: установка other_module
вызывает проблемы для некоторых пользователей и требуется только для тех, кто хочет использовать my_object
- что, в свою очередь, составляет лишь небольшую часть пользователей. Я хочу избавить тех пользователей, которым не нужно my_object
от установки other_module
.
Поэтому я хочу, чтобы импорт other_module
происходил только в том случае, если my_object
импортируется из my_module
. Другими словами, пользователь должен иметь возможность запускать следующее без установки other_module
:
from my_module import my_number
Мое лучшее решение на данный момент
Я мог бы предоставить my_object
через функцию, которая содержит импорт:
# in my_module.py
def get_my_object():
from other_module import foo
my_object = foo(23)
return my_object
Пользователь должен будет сделать что-то вроде:
from my_module import get_my_object
my_object = get_my_object()
Вопрос
Есть ли лучший способ условно инициировать импорт other_module
? Я в основном заинтересован в том, чтобы все было максимально просто для пользователей.