В Python, как я могу получить доступ к пространству имен основного модуля из импортированного модуля?

В частности, мне нужно получить некоторые объекты и глобалы из основного модуля в импортированном модуле. Я знаю, как найти эти вещи, когда родительский модуль хочет что-то особенное от дочернего модуля, но я не могу понять, как идти в другом направлении.

  • Python: мышление модуля и его переменных как одноэлементный подход - чистый подход?
  • Как я могу использовать общий код в python?
  • Ошибка PyCharm: «Нет модуля» при попытке импортировать собственный модуль (скрипт python)
  • python получает переменную модуля по имени
  • Модуль Python и __all__
  • Как загрузить скомпилированные модули python из памяти?
  • NameError с использованием execfile в python
  • Как изменить локальное пространство имен в python
  • Как загрузить скомпилированные модули python из памяти?
  • Что такое пространства имен Python?
  • Неправильно ли использовать встроенное имя функции в качестве атрибута или идентификатора метода?
  • Почему модули импортируются как _ <имя> в другом модуле?
  • 5 Solutions collect form web for “В Python, как я могу получить доступ к пространству имен основного модуля из импортированного модуля?”

    import __main__ 

    Но не делайте этого.

    Ответ, который вы ищете, это:

     import __main__ main_global1= __main__.global1 

    Однако всякий раз, когда модуль модуля module1 нуждается в материалах из модуля __main__ , тогда:

    • либо модуль __main__ должен предоставить все необходимые данные в качестве параметров функции / класса module1 ,
    • или вы должны поместить все, что необходимо для совместного использования в другом модуле, и импортировать его как import module2 как в __main__ и в module1 .

    Я думаю, что это сработает:

     import sys main_mod = sys.modules['__main__'] 

    Не уверен, что это хорошая практика, но, возможно, вы можете передать объекты и переменные, которые вам нужны, в качестве параметров для методов или классов, которые вы вызываете в импортированном модуле.

    Вы пытались использовать ключевое слово global ?

    См. Документацию .

    Python - лучший язык программирования в мире.