這感覺就像其中一個人無法回答的問題,但無論如何我都會問。我有一個Django 1.6項目時,我嘗試通過Django開發服務器來訪問我的網站的主頁被拋出一個導入錯誤:如何解決此Django導入錯誤?
ImportError at/
No module named photo
誤差以這條線在我的觀點一個頂部出現的:
# apps/photos/views.py
from classes.photo import Photo
這裏是堆棧跟蹤:
Request Method: GET
Request URL: http://localhost:8000/
Django Version: 1.6.2
Python Version: 2.7.5
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'apps.admin',
'apps.account',
'apps.home',
'apps.members',
'apps.messages',
'apps.payment',
'apps.photos',
'apps.signin',
'apps.profile',
'scripts',
'apps.try',
'favicon',
'django_nose',
'django_extensions')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.middleware.common.BrokenLinkEmailsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/Users/me/venv/yearbook/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
101. resolver_match = resolver.resolve(request.path_info)
File "/Users/me/venv/yearbook/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
318. for pattern in self.url_patterns:
File "/Users/me/venv/yearbook/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
346. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Users/me/venv/yearbook/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
341. self._urlconf_module = import_module(self.urlconf_name)
File "/Users/me/venv/yearbook/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
40. __import__(name)
File "/www/yearbook/conf/urls.py" in <module>
16. url(r'^photos/', include('apps.photos.urls')),
File "/Users/me/venv/yearbook/lib/python2.7/site-packages/django/conf/urls/__init__.py" in include
26. urlconf_module = import_module(urlconf_module)
File "/Users/me/venv/yearbook/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
40. __import__(name)
File "/www/yearbook/apps/photos/urls.py" in <module>
5. from apps.photos.views import ack_photos_uploaded
File "/www/yearbook/apps/photos/views.py" in <module>
11. from classes.photo import Photo
Exception Type: ImportError at/
Exception Value: No module named photo
通常這類型的問題很容易解決,但是這其中有我百思不得其解。我在我的「年鑑」的項目,包括有問題的相冊應用程式數量:
yearbook (Django project)
├── admin
├── apps (My various apps... see below)
├── bin
├── classes (photo.py in here)
├── conf (my settings.py and config files)
├── manage.py
├── scripts
├── static
└── templates
apps
├── __init__.py
├── __init__.pyc
├── account
├── home
├── members
├── messages
├── photos (<- problem occurs here)
├── profile
└── signin
類/ photo.py是Python模塊,它包含所需的照片類和各種實例,靜態和類方法操縱照片。我使用類而不是模型,因爲我不需要在數據庫中存儲與照片相關的信息。
# classes/photo.py
class Photo:
# instance variables and various methods here
pass
有什麼奇怪的這個錯誤是我可以「從classes.photo導入照片」添加到我的任何其他應用的意見,我沒有得到這個錯誤。實際上,我的「管理員」和「個人資料」應用程序導入並廣泛使用了照片模塊的Photo類。它只發生在我將它添加到我的照片view.py文件中。這感覺就像某種名稱的碰撞,但我不明白這可能是因爲我的課程模塊的路徑是/www/yearbook/classes/photo.py,但試圖導入它的視圖是在/ www/yearbook /apps/photos/views.py。類和apps/photos目錄中都有空的__init__.py
文件。
有誰知道這個問題可能是什麼?這特別令人沮喪,因爲這意味着我的照片管理應用程序無法使用我創建的用於支持管理照片的照片班來操作照片。
謝謝!
可能是一個循環依賴問題。 classes.photo是否導入photos.views? –
這是一個很好的想法,但是,不,classes.photo不會導入apps.photos.views。 – William
from yearbook.classes.photo import Photo? –