Tengo problemas para hacer que mis clases python funcionen dentro de la consola de python. Quiero importar automáticamente todas mis clases en el espacio de nombres global para que pueda usarlas sin prefix.module.names.Python: importación de clases de paquetes en el espacio de nombres global de la consola
Esto es lo que tengo hasta ahora ...
projectname/
|-__init__.py
|
|-main_stuff/
|-__init__.py
|-main1.py
|-main2.py
|
|-other_stuff/
|-__init__.py
|-other1.py
|-other2.py
Cada archivo define una clase del mismo nombre, por ejemplo, main1.py definirá una clase llamada Main1.
Mi PYTHONPATH
es la ruta de acceso absoluta a projectname /.
Tengo un archivo de inicio de Python que contiene lo siguiente:
from projectname import *
pero esto no me permitió usar mis clases en absoluto. Al iniciar una consola Python me gustaría ser capaz de escribir:
ob=Main1()
pero Principal1 no está dentro del espacio de nombres actual, por lo que no funciona.
He intentado añadir cosas a los archivos __init__.py
...
En projectname/__init__.py
:
import main_stuff
En projectname/main_stuff/__init__.py
:
import other_stuff
__all__ = ["main1", "main2", "main3"]
Y así sucesivamente. Y en mi archivo de inicio añadí:
from projectname.main_stuff import *
from projectname.main_stuff/other_stuff import *
Sin embargo, para utilizar las clases dentro de la consola Python todavía tengo que escribir:
ob=main1.Main1()
preferiría no necesitar la parte main1.
. ¿Alguien sabe cómo puedo poner automáticamente mis clases en el espacio de nombres global cuando uso la consola de Python?
Gracias.
==== ==== EDITAR
Lo que necesito es importar un paquete a nivel de clase, pero from package import *
me da todo a nivel de módulo. Estoy después de una manera fácil de hacer algo como esto:
for module in package do:
from package.module import *
==== ==== OTRA EDICION
acabé añadiendo las importaciones de clase a mi archivo de inicio pitón de forma individual. No es ideal debido a la sobrecarga de mantenerlo, pero hace lo que quiero.
from class1.py import Class1
from class2.py import Class2
from class3.py import Class3
+1 por "verter un cubo de nombres" –