Python - Linux - ImportError: No module named miClase.

 
Vista:

Linux - ImportError: No module named miClase.

Publicado por diego (2 intervenciones) el 13/10/2011 02:50:46
Buenas tengo el siguiente error que no puedo encontrar porque me esta pasando:

El error que sale por consola es el siguiente:
ImportError: No module named miClase.

Esto pasa cuando realizo un import de una de mis clases que se encuentra en mi package (nombre "Motor"), en alguna de mis clases que están dentro del package que tengo (se entiende?), paso a detallar un poco mas:

El main que se encuentra en la raiz (src), tiene el siguiente código:

# ------------- INICIO IMPORT ------------- #
from Motor.VentanaPrincipal import VentanaPrincipal
import logging
# -------------- FIN IMPORT --------------- #


if __name__ == '__main__':

logging.basicConfig(filename='logMotor.log',level= logging.DEBUG)
logging.info('Se inicia el archivo EjecutarAplicacion Correctamente')

venPrin = VentanaPrincipal ()
logging.info('Se Crea la ventana principal Correctamente')

Hasta aquí todo bien!, el import lo hace correcto y sigue ejecutando el main (comprobado por el archivo log), luego cuando se crea venPrin se llama a la clase VentanaPrincipal que se encuentra en el package "Motor", y el código de la clase ventanaPrincipal es el siguiente:

# ------------- INICIO IMPORT ------------- #
import pygame
from pygame.locals import *
from Motor.XML import XML
# -------------- FIN IMPORT --------------- #

Pongo solo el import porque comprobe mediante un log que se cae cuando realiza el import from Motor.XML import XML, además del obvio msj que me aparece en consola que todo indica que es cuando realiza el import de la clase XML. (aclaro que tengo otras clases ademas de XML y alterne el orden para ver si el problema era una clase en especifico, pero no, ya que cuando explota cuando llama a cualquiera de mis clases)

Me esta dando el error de ImportError: No module named XML, o sea no puede importar la clase XML que se encuentra en el mismo package que VentanaPrincipal.

La estructura de mi proyecto es la siguiente:
-- src
-----main.py (ubicado en src)
---------- Motor (package)
----------------------- XML.py (dentro de Motor)
----------------------- VentanaPrincipal.py (dentro de Motor)

Lo que pude ver es que no tengo problema cuando realizo un import desde fuera del package, como te comente la clase main hace un import de VentanaPrincipal (from Motor.VentanaPrincipal import VentanaPrincipal) y no hay problema, es mas sigue ejecutando el código, pero el problema aparece cuando dentro del package hago un impor de una clase que también esta en el package (from Motor.XML import XML), acá explota.!! Por ahí viene el problema pero no me doy cuenta bien porque pasa esto?, ya que en Windows funciona sin problemas pero en linux no.

Otra cosa que probe y no funciono fue realizar el impor sin especificar el package (ya que estoy dentro de el) o sea asi from XML import XML
Tampoco funciono!!, realmente no se que pasa! debe ser algo simple porq no funciona en linux (fedora - Sugar) y si en windows. Hay que configurar algo en linux? algun path¿, etc para que reconozca el package mio?

Espero haberme explicado mejor, gracias por la ayuda!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Linux - ImportError: No module named miClase.

Publicado por diego (2 intervenciones) el 13/10/2011 03:54:13
Bueno por fin pude arreglar el error!!! gracias por la ayuda!!

El problema se arreglo cuando le cambie el nombre a mi clase, de XML.py a datosXml.py esta clase paso a estar en orden alfabético arriba de todas en mi package. Luego cuando probé en linux mágicamente funciono!!
No puedo encontrar una explicación lógica a como se soluciono, pero pude notar los siguientes cambios,

01- el nombre de mi clase no estaba mas con todas Mayúsculas o sea de XML a datosXml, no creo que importe pero fue uno de los cambios.
02 - El orden en el package cambio, de estar ultima a estar primera, esto es lo que mas pinta le veo a que halla hecho un efecto, ya que creo q el problema podía residir en que quería importar un modulo que no estaba creado antes por un tema de orden o algo? ya que antes estaba al final del package y ahora al principio.

Bueno realmente no se técnicamente por que funciono pero por las dudas les comente lo que cambie para que funcione y los cambios que vi reflejados.

Saludos y gracias por la ayuda!! :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar