Я предлагаю не помещать эти пути в подмодуль, а вместо этого загружать эти зависимости во время выполнения. Таким образом, вы можете указать пути, когда вы их называете. Этот шаблон называется внедрение зависимостей
. Другим решением будет рефакторинг субмодуля, чтобы он вообще не зависел от внешних путей (это было бы самым чистым решением imho, но это не всегда возможно и эффективно)
Вот как бы вы реализовали DI в целом (Также я только что отметил, что ваш вопрос касается js, а не python. Помимо синтаксиса он должен работать так же, как и он) :
Предполагая, что ваш SubModule называется «mySubModule» и выглядит так:
import myModule
def myFunction(myParameter):
myModule.doStuff()
с внедрением зависимостей это будет выглядеть так:
def myFunction(myModule):
myModule.doStuff()
каждый раз, когда вы Для вызова myFunction
вы должны указать модуль myModule
в качестве параметра. Например:
import mySubModule
import myModule
mySubModule.myFunction(myModule)
Вы также можете сделать это с помощью глобальной переменной внутри вашего подмодуля:
myModule = None
def myFunction(myParameter):
myModule.doStuff()
, прежде чем вы вызовете myFunction
в первый раз, вам придется установить модуль снаружи. Например:
import mySubModule
import myModule
mySubModule.myModule = myModule
mySubModule.myFunction(myModule)
Если в вашем подмодуле есть класс, вы также можете предоставить модуль в качестве параметра для конструктора. Это был бы самый чистый способ, я думаю