2015-07-13 109 views
2

這感覺就像其中一個人無法回答的問題,但無論如何我都會問。我有一個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文件。

有誰知道這個問題可能是什麼?這特別令人沮喪,因爲這意味着我的照片管理應用程序無法使用我創建的用於支持管理照片的照片班來操作照片。

謝謝!

+0

可能是一個循環依賴問題。 classes.photo是否導入photos.views? –

+0

這是一個很好的想法,但是,不,classes.photo不會導入apps.photos.views。 – William

+0

from yearbook.classes.photo import Photo? –

回答

-2

嘗試將__init__.py添加到您的文件夾。這樣python知道它是你項目的一部分。

+0

你一定沒有讀過我的問題,因爲我說我已經這樣做了。 – William

1

我發現了問題所在。我也碰巧在我的年鑑/ apps/photos目錄中有classes.py文件。當我嘗試從apps/photos/views.py中的classes.photo模塊中導入Photo時,Django似乎將其與我的年/課目錄混爲一談。