В частности, мне нужно получить некоторые объекты и глобалы из основного модуля в импортированном модуле. Я знаю, как найти эти вещи, когда родительский модуль хочет что-то конкретное от дочернего модуля, но я не могу понять, как идти в другом направлении.
В 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
Не уверен, что это хорошая практика, но, возможно, вы можете передать объекты и переменные, которые вам нужны, в качестве параметров для методов или классов, которые вы вызываете в импортированном модуле.