Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Necesito saber el por que sale este error

Estas en el tema de Necesito saber el por que sale este error en el foro de Python en Foros del Web. Estimados necesito que me ayuden con esto, necesito saber que estoy haciendo mal como para que me salga ese error. Cita: IronPython.Runtime.Exceptions.ImportException: No module named ...
  #1 (permalink)  
Antiguo 26/01/2016, 19:04
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años
Puntos: 4
Necesito saber el por que sale este error

Estimados necesito que me ayuden con esto, necesito saber que estoy haciendo mal como para que me salga ese error.

Cita:
IronPython.Runtime.Exceptions.ImportException: No module named PacienteDAL
en Caller.Call
en BuiltinFunctionCaller<System.__Canon,System.__Cano n,System.__Canon,System.__Canon,System.__Canon,Sys tem.Int32>.Call5
en System.Dynamic.UpdateDelegates.UpdateAndExecute7
en IronPython.Runtime.Importer.Import
en IronPython.Runtime.Operations.PythonOps.Initialize Module
en PythonMain.Main
Espero me puedan orientar, gracias.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #2 (permalink)  
Antiguo 27/01/2016, 01:10
Avatar de Once  
Fecha de Ingreso: enero-2016
Mensajes: 8
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Necesito saber el por que sale este error

Cita:
IronPython.Runtime.Exceptions.ImportException: No module named PacienteDAL
Falta el módulo PacienteDAL

Saludos!
  #3 (permalink)  
Antiguo 27/01/2016, 07:45
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años
Puntos: 4
Respuesta: Necesito saber el por que sale este error

Estimado la clase PacienteDAL si esta, dejo codigo:

Capa diseño:
Código Python:
Ver original
  1. def Btn_guardarClick(self, sender, e):
  2.     r = str(self._txt_rut.Text)
  3.     n = str(self._txt_nombre.Text)
  4.     ap = str(self._txt_paterno.Text)
  5.     am = str(self._txt_materno.Text)       
  6.     dia = str(self._numericUpDown1.Value)
  7.     mes = str(self._comboBox1.Text)
  8.     year = str(self._txt_year.Text)
  9.  
  10.     from PacienteBLL import PacienteBLL
  11.     paciente1 = PacienteBLL(r, n, ap, am, dia, mes, year)
  12.     self._lbl_mensaje.Text = str(paciente1.IngresarPacienteBLL())

Capa negocio:
Código Python:
Ver original
  1. class PacienteBLL(object):
  2.     """"""
  3.     def __init__(self, rut, nombres, paterno, materno, dia, mes, year):
  4.         self.rut = rut
  5.         self.nombres = nombres
  6.         self.paterno = paterno
  7.         self.materno = materno
  8.         self.dia = dia
  9.         self.mes = mes
  10.         self.year = year
  11.        
  12.     def rut(self):
  13.         return self.rut
  14.    
  15.     def nombres(self):
  16.         return self.nombres
  17.    
  18.     def paterno(self):
  19.         return self.paterno
  20.    
  21.     def materno(self):
  22.         return self.materno
  23.    
  24.     def dia(self):
  25.         return self.dia
  26.    
  27.     def mes(self):
  28.         return self.mes
  29.    
  30.     def year(self):
  31.         return self.year
  32.    
  33.     def IngresarPacienteBLL(self):
  34.         r = str(self.rut)
  35.         n = str(self.nombres)
  36.         a = str(self.paterno+" "+self.materno)
  37.         f = str(self.dia+"-"+self.mes+"-"+self.year)
  38.        
  39.         from PacienteDAL import PacienteDAL
  40.         paciente2 = PacienteDAL(r, n, a, f)
  41.         msg = srt(paciente2.IngresarPacienteDAL())
  42.         return msg

Capa datos:
Código Python:
Ver original
  1. class PacienteDAL(object):
  2.     """"""
  3.     def __init__(self, rut, nombre, apellido, fecha):
  4.         self.rut = rut
  5.         self.nombre = nombre
  6.         self.apellido = apellido
  7.         self.fecha = fecha
  8.        
  9.     def rut(self):
  10.         return self.rut
  11.    
  12.     def nombre(self):
  13.         return self.nombre
  14.    
  15.     def apellido(self):
  16.         return self.apellido
  17.    
  18.     def fecha(self):
  19.         return self.fecha
  20.    
  21.     def IngresarPacienteDAL(self):
  22.         fecha = str(self.fecha)
  23.         info = str("Rut: "+ self.rut +"- Nombres: "+ self.nombre +" -Apellidos"+ self.apellido)
  24.         msg = "Fecha: "+self.fecha+" - Paciente: "+info
  25.        
  26.         # query = "INSERT INTO paciente (rut, nombres, apellidos, fnacimiento) VALUES ('%s','%s','%s','%s')" % self.rut, self.nombre, self.apellido, self.fecha
  27.         # from Conexion import *
  28.         # conn = Conexion()
  29.         # conn.run_query(query)
  30.         # msg = "Ingresado"
  31.         return msg
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #4 (permalink)  
Antiguo 27/01/2016, 09:16
Avatar de Once  
Fecha de Ingreso: enero-2016
Mensajes: 8
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Necesito saber el por que sale este error

Hola, cuando trabajas con módulos, no importan las clases, lo que importa son los archivos y la estructura de los directorios.

Si importas un módulo, debes tener en cuenta que el nombre debe coincidir con el nombre del archivo. No importa el contenido del archivo. Ahora, suponiendo que tienes está parte bien, también debes tener en cuenta que para que Python reconozca que en un directorio hay módulos que pueden ser importados, debe existir un archivo llamado __init__.py

Suponiendo que desde el archivo main.py estás importando el módulo PacienteDAL la estructura del directorio debería ser:

-> main.py
-> PacienteDAL.py
-> __init__.py

Saludos!
  #5 (permalink)  
Antiguo 27/01/2016, 10:06
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años
Puntos: 4
Respuesta: Necesito saber el por que sale este error

Estimado dejo imagen de mi proyecto, desde IronWinFormsApp invoko bien el metodo en BLL el problema esta cuando trato de invokar el metodo presente en DAL, ahi me aparece el error No module named PacienteDAL, creo que tengo todo correcto segun tu respuesta.

__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #6 (permalink)  
Antiguo 27/01/2016, 12:45
Avatar de Once  
Fecha de Ingreso: enero-2016
Mensajes: 8
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Necesito saber el por que sale este error

No sé bien en qué estás programando. Pero en lo que respecta a Python, a parte de lo que te he dicho, la otra opción es agregar las rutas de las carpetas donde estan los módulos a la lista sys.path y de nuevo, asegúrate de tener los archivos __init__.py donde están los módulosq ue quieres importar. Si nada de lo que te he dicho no funciona, tendrás que esperar que alguien que maneje el entorno que estas usando te pueda orientar mejor,porque en lo que respecta a Python,no se me ocurre que más pueda estar faltando.

Saludos!
  #7 (permalink)  
Antiguo 27/01/2016, 13:50
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años
Puntos: 4
Respuesta: Necesito saber el por que sale este error

Estimado estoy programando una aplicacion windows con SharpDevelop y IronPython en windows 7. Añadi un archivo __init__.py a mi estructura y en ninguna funciono, creo que el manejo que hace ese archivo el ide o el framework lo maneja por debajo. Y sigo con el mismo problema.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #8 (permalink)  
Antiguo 27/01/2016, 20:00
Avatar de Once  
Fecha de Ingreso: enero-2016
Mensajes: 8
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Necesito saber el por que sale este error

Agrega la ruta donde están los archivos al sys.path. Justo antes de importar:

Código Python:
Ver original
  1. import sys
  2. sys.path.append(ruta)
  3. import PacienteDAL

Así tendría que funcionar. Solo cambia ruta por la ruta donde están los módulos.

Saludos!

Última edición por Once; 27/01/2016 a las 20:35
  #9 (permalink)  
Antiguo 28/01/2016, 09:33
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años
Puntos: 4
Respuesta: Necesito saber el por que sale este error

Estimado funciono perfecto asi que dejo el codigo solucionado, pero encuentro un poco inseguro el echo de poner uno la ruta, que pasa si por casualidad se borra el directorio? existira otra forma? o sera problema del IDE.

Gracias.

Código Python:
Ver original
  1. def IngresarPacienteBLL(self):
  2.         r = str(self.rut)
  3.         n = str(self.nombres)
  4.         a = str(self.paterno+" "+self.materno)
  5.         f = str(self.dia+"-"+self.mes+"-"+self.year)
  6.        
  7.         import sys
  8.         ruta = "C:/Users/.../SharpDevelop Projects/IronWinFormsApp/DAL/bin/Debug"
  9.         sys.path.append(str(ruta))
  10.         import PacienteDAL2
  11.        
  12.         from PacienteDAL2 import PacienteDAL2
  13.         paciente2 = PacienteDAL2(r, n, a, f)
  14.         msg = str(paciente2.IngresarPacienteDAL2())
  15.         return msg
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #10 (permalink)  
Antiguo 28/01/2016, 12:02
Avatar de Once  
Fecha de Ingreso: enero-2016
Mensajes: 8
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Necesito saber el por que sale este error

Cita:
Iniciado por BlueSkull Ver Mensaje
Estimado funciono perfecto asi que dejo el codigo solucionado, pero encuentro un poco inseguro el echo de poner uno la ruta, que pasa si por casualidad se borra el directorio? existira otra forma? o sera problema del IDE.
No es problema del IDE, es problema de la forma en que estructuraste el proyecto. Por eso, por lo general las carpetas con los módulos están dentro del mismo directorio donde se encuentra el script que los llama. La otra opción es usar rutas relativas en lugar de absolutas, teniendo como referencia la ruta donde está el script en el que importas los módulos.

Saludos!
  #11 (permalink)  
Antiguo 29/01/2016, 09:15
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años
Puntos: 4
Respuesta: Necesito saber el por que sale este error

Estimado gracias por tu tiempo, te pasaste.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:09.