Específicamente, necesito llegar a algunos objetos y globales desde el módulo principal en un módulo importado. Sé cómo encontrar esas cosas cuando el módulo padre quiere algo particular de un módulo secundario, pero no puedo imaginarme cómo ir en la otra dirección.En Python, ¿cómo puedo acceder al espacio de nombres del módulo principal desde un módulo importado?
En Python, ¿cómo puedo acceder al espacio de nombres del módulo principal desde un módulo importado?
Respuesta
import __main__
Pero no hagas esto.
¿por qué no hacer esto? – Alcott
@Alcott: Porque puede convertir fácilmente su programa en un pretzel. –
@ IgnacioVazquez-Abrams ¿puede ampliar eso? –
No estoy seguro de 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.
Creo que esto funcionaría:
import sys
main_mod = sys.modules['__main__']
Esto es equivalente a 'import __main__ como main_mod'. –
La respuesta que está buscando es:
import __main__
main_global1= __main__.global1
Sin embargo, cada vez que un módulo de module1
necesita cosas desde el módulo __main__
, entonces:
- el módulo
__main__
debe proporcionar todos los datos necesarios como parámetros a una función/clasemodule1
, - o debe poner todo lo que necesita ser compartido en otro módulo, e importarlo como
import module2
en ambos__main__
ymodule1
.
- 1. En python, ¿cómo importa todas las clases desde otro módulo sin mantener el espacio de nombres del módulo importado?
- 2. Python: ¿por qué un módulo importado no puede hacer referencia a otro módulo importado?
- 3. ¿Cómo puedo anular una constante en un módulo Python importado?
- 4. ¿Cómo puedo acceder al módulo de ejecución actual o al nombre de clase en Python?
- 5. Módulo importado varias veces
- 6. Python: Encuentre la ruta absoluta de un módulo importado
- 7. Obtención de la ruta del archivo del módulo importado
- 8. constantes en Python: en la raíz del módulo o en un espacio de nombres dentro del módulo?
- 9. Cómo acceder al módulo auxiliar de URL desde los rieles
- 10. ¿Cómo acceder al espacio de nombres base en Ruby?
- 11. Iterar las clases definidas en un módulo importado dinámicamente
- 12. de. * importación del módulo
- 13. ¿Cómo puedo acceder a las rutas relativas en Python 2.7 cuando es importado por diferentes módulos?
- 14. descargar un módulo en Python
- 15. Espacio de nombres de módulo de TypeScript en varios archivos
- 16. Dependencia del módulo Python
- 17. Llamar a un módulo Perl desde Python
- 18. Desarrollo del módulo de Python
- 19. Problema al importar 'tiempo' como un módulo en python
- 20. Tirando pitón módulo hacia arriba en espacio de nombres paquete
- 21. Error al instalar un módulo de python
- 22. Python: ¿Cómo obtengo una referencia a un módulo dentro del módulo?
- 23. ¿Cómo acceder al espacio del kernel desde el espacio del usuario?
- 24. ¿Cómo incluir un módulo en un espacio de nombres de rake en archivos separados?
- 25. Python: ¿Cómo puedo usar la variable del archivo principal en el módulo?
- 26. módulo dinámico en Python
- 27. Uso del módulo de socket en el espacio aislado Pypy
- 28. ¿Cómo puedo hipervincular un método desde un módulo de Python en Sphinx?
- 29. Cómo des-importar un módulo de Python?
- 30. Consumo de memoria del módulo Python Shelve
Bueno, está bien, supongo que debe ser el caso, ya que no puedo encontrar ninguna respuesta sobre esto en ninguna parte. La conclusión es que no me preocupa volver a utilizar este código, solo intento dividir este proyecto en varios archivos para que sea más manejable encontrar lo que estoy buscando. Realmente no sé lo que estoy haciendo, sinceramente, así que esta ha sido una experiencia de aprendizaje, pero realmente solo quiero que sea más fácil encontrar el código que quiero editar cuando quiero editarlo. – Damon
Acepto que debe haber una manera de pasar parámetros a un módulo cuando se importa, como cuando se los pasa a un constructor de objetos. Sin embargo, nunca he encontrado una manera limpia de hacer esto. – martineau
Estaba buscando exactamente lo mismo por la misma razón, por lo que parece que es una cosa novata típica. – sfranky