我正在开发时没遇到这个问题,但是当我在centos 6上部署到apache 2.2时,我一直收到这个错误:
ImportError at /
no module named models
Request Method: GET
Django Version: 1.6.5
Exception Type: ImportError
Exception Value:
cannot import name models
Exception Location: /var/www/quiz_app/proj/builder/views/my_quizzes.py in <module>, line 5
Python Executable: /usr/bin/python
Python Version: 2.6.6
Python Path:
['/var/www/quiz_app/proj/builder',
'/var/www/quiz_app/proj',
'/usr/lib/python2.6/site-packages/setuptools-5.3-py2.6.egg',
'/usr/lib/python2.6/site-packages/pip-1.5.6-py2.6.egg',
'/usr/lib64/python26.zip',
'/usr/lib64/python2.6',
'/usr/lib64/python2.6/plat-linux2',
'/usr/lib64/python2.6/lib-tk',
'/usr/lib64/python2.6/lib-old',
'/usr/lib64/python2.6/lib-dynload',
'/usr/lib64/python2.6/site-packages',
'/usr/lib/python2.6/site-packages']
我正在使用Django 1.6.5和python 2.6我真的被困在这一个上,任何帮助都会非常感激!如果您需要任何其他信息,请告诉我。
提供错误的文件是名为my_quizzes.py
的视图from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseNotFound
from django.shortcuts import render
from builder import models as b
我的httpd.conf文件如下所示:
WSGIScriptAlias / /var/www/quiz_app/proj/quiz/wsgi.py
WSGIPythonPath /var/www/quiz_app/proj/
<Directory /var/www/quiz_app/proj/\>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
settings.py安装的应用程序看起来像
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'homepage',
'administration',
'exam',
'builder',
)
如果这对任何人都有帮助,那么相关的树结构
|proj
|-builder
|-__init__.py
|-models.py
|-views
|-__init__.py
|-my_quizzes.py (this is where the import error is occurring)
答案 0 :(得分:1)
原来我的问题纯粹是一个路径问题。我仍然不完全理解为什么,如果有人想要添加更多细节,我很乐意在这里添加。
我试图在作为文件夹的视图中导入应用的模型文件。在这种情况下,该应用程序称为构建器。所以当我将表单构建器导入模型称为b时。我收到导入错误。为了解决这个问题,我将其更改为..导入模型为b。
奇怪的是,我可以导入其他应用程序模型(具有相同的文件组织),只需使用管理导入模型作为。只是应用程序中的视图无法直接导入模型文件。
感谢所有试图帮助的人!格雷厄姆的评论让我朝着正确的方向前进,弄清楚这里发生了什么。