2011-08-18 18 views
6

ho creato la mia propria applicazione Django con la struttura di directoryDjango ImportError

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

All'interno a.py Ho l'importazione seguente

from ..models import Something 

Questo funziona bene se ho /appname dentro la mia cartella /djangoproject, ma quando ho installa l'app sui pacchetti del sito di Python (tramite setup.py che ho creato), si scatena l'inferno e a.py non può più importare Something, con la seguente e rror:

ImportError: cannot import name Something 

Ecco l'setup.py:

from distutils.core import setup 

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

risposta

5

Si scopre che si trattava di un errore di importazione circolare. models.py stava importando a.py e a.py importando models.py.

rompere questo cerchio ha risolto i problemi di importazione, ma ora è giunto il momento di capire come fare la valutazione pigra in Python :-)

+0

Mi sono imbattuto in questo me stesso, ho appena messo l'istruzione import all'interno della funzione che ha richiesto 'a.py', ma sembra icky. Qual è stata la tua soluzione? – Harry

2

Mettere file vuoto denominato: __init__.py dentro/submodule1 modo Python in grado di analizzare come modulo. Dovrebbe aiutare Lo stesso in/appname - ci dovrebbe essere anche __init__.py file

+0

Sì avevo '__init __. Py' sia in'/submodule1' e '/ 'ma mi sta ancora dando l'ImportError'. –

Problemi correlati