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