2011-08-18 8 views
6

He creado mi propia aplicación Django con la estructura de directoriosDjango ImportError

/appname 
    __init__.py 
    models.py 
    /submodule1 
     __init__.py 
     a.py 

Dentro a.py Tengo el siguiente importación

from ..models import Something 

Esto funciona bien si tengo /appname dentro de mi carpeta /djangoproject, pero cuando instalar la aplicación a los paquetes de sitio de Python (a través de setup.py que creé), todo se rompe y a.py ya no puede importar Something, con la siguiente e rror:

ImportError: cannot import name Something 

Aquí está el setup.py:

from distutils.core import setup 

setup(name='appname', 
     version='0.1', 
     packages=['appname', 'appname.contrib'], 
) 

Respuesta

5

Resulta que se trata de un error circular de importación. models.py estaba importando a.py y a.py estaba importando models.py.

romper este círculo resuelve los problemas de importación, pero ahora es el momento de encontrar la manera de hacer la evaluación perezosa en Python :-)

+0

Me he encontrado con esto por mi cuenta, simplemente puse la declaración de importación dentro de la función que requería 'a.py', pero eso parece asqueroso. ¿Cuál fue tu solución? – Harry

2

archivo Ponga vacío denominado: __init__.py interior/submodule1 lo que Python puede analizar como módulo. Debería ayudar. El mismo en/appname - también debe haber __init__.py file

+0

Sí que había '__init __. Py' tanto en'/submodule1' y '/ 'pero todavía me está dando el' ImportError'. –

Cuestiones relacionadas