Foros del Web » Programando para Internet » Python »

No module named dentro del app

Estas en el tema de No module named dentro del app en el foro de Python en Foros del Web. Buenas, tengo una duda, no se si se pueda Tengo una aplicación llamada usuario Dentro de esta aplicación tengo una carpeta llamada functions, tiene un ...
  #1 (permalink)  
Antiguo 03/06/2012, 17:54
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 18 años, 7 meses
Puntos: 14
No module named dentro del app

Buenas, tengo una duda, no se si se pueda

Tengo una aplicación llamada usuario
Dentro de esta aplicación tengo una carpeta llamada functions, tiene un archivo __init__.py y un archivo que se llama utiles.py

Ahora bien, cuando dentro de views hago

Código:
from functions.utiles import *
me da error, me dice No module named functions.utiles

pero cuando hago
Código:
from apps.vecindar.usuario.functions.usuario import *
Aquí si funciona

Quiero saber si es posible que estando dentro de una app X, al llamar a un archivo que este dentro de una carpeta que pertenezca a la misma app no se deba incluir la ruta absoluta, como por ejemplo cuando se llama forms o models, obviamente si es una app diferente se debe colocar la ruta absoluta, pero siendo la misma app no existe manera de omitir colocar la ruta absoluta?

Gracias
__________________
Juegos
Juegos iphone
  #2 (permalink)  
Antiguo 03/06/2012, 18:36
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: No module named dentro del app

Recuerda que la app debe de estar instalada en los settings para poder acceder a los paquetes de manera relativa.

Por ejemplo si tengo aplicación llamada tweets y estoy en un proyecto con varias aplicaciones y suponiendo que tengo instalado tweets entonces debo de llamarlo de la siguiente manera.

Código Python:
Ver original
  1. from tweets.models import MyModel

Entonces por lo general haces esto:
Código Python:
Ver original
  1. form my_app_name import foo


Si estas utilizando apache como servidor web no olvides configurar tus rutas para que apunten al proyecto.

PD: No hagas
Código Python:
Ver original
  1. from foo import *

Esto eso son malas practicas de php. Por que no sabes lo que estas importando de ese modulo.
  #3 (permalink)  
Antiguo 03/06/2012, 19:37
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 18 años, 7 meses
Puntos: 14
Respuesta: No module named dentro del app

Precisamente ese es el detalle, yo quiero llamarlo de la siguiente manera

Código:
from functions.utiles import algo
ya que se supone que estoy dentro de mi app apps.vecindar.usuario que tiene una carpeta llamada functions y dentro un archivo utiles y __init__, pero me da error, me obliga a llamarlo con la ruta completa (esto seria normal si estubiera en una app diferente), me gustaría que al estar en la misma app no toque especificar toda la ruta, con respecto a models y views si funciona bien, el problema es cuando hay "paquetes" dentro de la app

Ya la tengo instalada en settings

Código:
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    #'django.contrib.sessions',
    #'django.contrib.sites',
    #'django.contrib.messages',
    #'django.contrib.staticfiles',

    #vecindar apps
    'apps.vecindar.home',
    'apps.vecindar.usuario',
}
¿Estando dentro de la misma app es necesario darle la ruta absoluta si es un paquete?
__________________
Juegos
Juegos iphone
  #4 (permalink)  
Antiguo 03/06/2012, 20:40
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: No module named dentro del app

Si, si estas en un modulo fuera de tu app entonces tienes que llamarlo a fuerza por la ruta completa.

Pero si estas por ejemplo en models.py dentro de tu app y tienes en la misma carpeta (o en niveles inferiores) otros módulos entonces puedes importarlos de manera simple, "from other import function".

¿Otra cosa podrías poner toda pagina de error?

Etiquetas: django
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 22:32.