En Python, ¿cómo puedo acceder al espacio de nombres del módulo principal desde un módulo importado?

Específicamente, necesito obtener algunos objetos y globales del módulo principal en un módulo importado. Sé cómo encontrar esas cosas cuando el módulo principal quiere algo particular de un módulo secundario, pero no puedo averiguar cómo ir en la otra dirección.

import __main__ 

Pero no hagas esto.

La respuesta que estás buscando es:

 import __main__ main_global1= __main__.global1 

Sin embargo, cada vez que un módulo module1 necesita cosas del módulo __main__ , entonces:

  • o bien el módulo __main__ debe proporcionar todos los datos necesarios como parámetros a una función / clase de module1 ,
  • o debe poner todo lo que necesita ser compartido en otro módulo, e importarlo como import module2 tanto en __main__ como en module1 .

Creo que esto funcionaría:

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

No estoy seguro si es una buena práctica, pero tal vez podría pasar los objetos y las variables que necesita como parámetros a los métodos o clases que llama en el módulo importado.