В частности, мне нужно получить некоторые объекты и глобалы из основного модуля в импортированном модуле. Я знаю, как найти эти вещи, когда родительский модуль хочет что-то конкретное от дочернего модуля, но я не могу понять, как идти в другом направлении.
В Python, как я могу получить доступ к пространству имен основного модуля из импортированного модуля?
Ответ 1
import __main__
Но не делайте этого.
Ответ 2
Ответ, который вы ищете, это:
import __main__
main_global1= __main__.global1
Однако, всякий раз, когда модуль module1
нуждается в материалах из модуля __main__
, тогда:
- либо модуль
__main__
должен предоставить все необходимые данные в качестве параметров функцииmodule1
/class, - или вы должны поместить все, что нужно для совместного использования в другом модуле, и импортировать его как
import module2
как в__main__
, так и вmodule1
.
Ответ 3
Я думаю, что это сработает:
import sys
main_mod = sys.modules['__main__']
Ответ 4
Не уверен, что это хорошая практика, но, возможно, вы можете передать объекты и переменные, которые вам нужны, в качестве параметров для методов или классов, которые вы вызываете в импортированном модуле.