2015-07-13 132 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似乎将其与我的年/课目录混为一谈。