Nagle dostałem błąd importu
Założyłem więc wirtualizację na Ubuntu, zainstalowałem wszystko i uruchomiłem witrynę deweloperskąrunserver
. Wszystkie moje testy jednostkowe przeszły pomyślnie, ale wiele testów jednostkowych pakietów Django nie przechodziło.
Więc spróbowałemgit bisect
dowiedzieć się tego, sprawdzając najwcześniejsze popełnione przeze mnie zobowiązania. Przeszedłem za wcześnie w historii, kiedy środowisko programistyczne korzystało z różnych silników baz danych, pakietów itp., A strona oczywiście nie mogła działać. Postanowiłem wtedy pracować nad czymś o wiele ważniejszym niż niepowodzenie testów jednostkowych Django (ponieważ moje własne działały), więc wróciłem do najnowszego zatwierdzenia w gałęzi rozwojowej.
Wystrzeliłemrunserver
ponownie, ale tym razem, gdy ponownie załadowałem stronę główną, spotkałem się z błędem:
Traceback:
File "...venv.../local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
101. request.path_info)
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
298. for pattern in self.url_patterns:
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
328. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
323. self._urlconf_module = import_module(self.urlconf_name)
File "...venv.../local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
35. __import__(name)
File "...project dir.../myproject/urls.py" in <module>
2. import frontpage.views
Exception Type: ImportError at /
Exception Value: No module named views
Wszystko działało dobrze, zanim spróbowałem przecinać git. Ale już nie, przynajmniej na mojej lokalnej maszynie.
Więc przeszedłem dookoła i zmieniłem mojeROOT_URLCONF
z'myproject.urls'
po prostu'urls'
. Teraz pojawia się ten komunikat o błędzie:
Traceback:
File "...venv.../local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
101. request.path_info)
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
298. for pattern in self.url_patterns:
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
328. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
323. self._urlconf_module = import_module(self.urlconf_name)
File "...venv.../local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
35. __import__(name)
Exception Type: ImportError at /
Exception Value: No module named urls
Poszukałem czegoś więcej i pomyślałem, że moja ścieżka do Pythona nie zawierała mojego katalogu projektu ... ale nie, całkowicie to robi, gdy dodałemprint sys.path
w moimsettings.py
plik do projektu!
Więc w czym problem? Używam Django 1.4.3 i uruchamiam serwer używającpython manage.py runserver
. Przysięgam, że moja witryna działała zaledwie kilka godzin temu i od tego czasu zrobiłemgit checkout development
igit reset
wiele razy ... Próbowałem usunąć virtualenv, odtworzyć go i ponownie zainstalować wszystkie pakiety Pythona. Nadal mam ten sam błąd.
(Poza tym aktywowałem virtualenv, a nawet próbowałem zrestartować komputer, na wszelki wypadek ... do tej pory nie miałem szczęścia)
AKTUALIZACJA
Podążając za sugestią Lennarta, uruchomiłem debugger tuż przed nieudanym importem i znalazłem toimport frontpage
działa, ale nieimport frontpage.views
, frontpage.tests
, albo coś innego. Mam__init__.py
plik wfrontpage
katalog. W tym momenciesys.path
zawiera mój folder projektu w porządku ...
Już włączyłemfrontpage
w moimINSTALLED_APPS
także.
NAPRAWIONY
Dzięki Lennartowi sprawdziłem, żefrontpage
moduł rzeczywiście został poprawnie zaimportowany. Prawidłowe.pyc
plik został pokazany, ale zastanawiałem się, czy pliki pyc nie są w jakiś sposób zsynchronizowane z moim rzeczywistym kodem.
Usunąłem więc wszystkie pliki pyc, zrestartowałem serwer i wszystko działa jeszcze raz :)