2011-08-18 11 views
6

tworzę własną aplikację Django ze strukturą katalogówDjango ImportError

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

Wewnątrz a.py Mam następujący importu

from ..models import Something 

Działa to dobrze, jeśli mam /appname wewnątrz moim folderze /djangoproject, ale kiedy zainstaluj aplikację na pakiety site'owe Pythona (poprzez setup.py, które stworzyłem), rozpęta się piekło i a.py nie może już importować Something, za pomocą następującego e rror:

ImportError: cannot import name Something 

Oto setup.py:

from distutils.core import setup 

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

Odpowiedz

5

Okazuje się, że był to błędny błąd importu. models.py importował a.py, a a.py importował models.py.

Łamanie ten krąg rozwiązane kwestie importu, ale teraz nadszedł czas, aby dowiedzieć się, jak to zrobić w Pythonie oceny leniwy :-)

+0

Wpadłem na to sam, po prostu umieściłem instrukcję importującą wewnątrz funkcji wymagającej 'a.py', ale to wydaje się niedorzeczne. Jakie było twoje rozwiązanie? – Harry

2

Umieścić pusty plik o nazwie: __init__.py wewnątrz/submodule1 więc Python można analizować go jako moduł. To powinno pomóc. To samo w/appname - powinno być też __init__.py plik

+0

Tak ja '__init __. Py' zarówno'/submodule1' i '/ 'ale nadal daje mi' ImportError ". –