无法使用Apache导入/没有名为Django Error的模块

时间:2009-11-01 02:03:11

标签: django apache

我在本地计算机上的开发服务器上设置了一个小概念验证。我现在正试图将它移动到生产服务器上的django,我正在使用webfaction。但是,现在我从内置的django服务器切换到apache,我得到以下内容:

ViewDoesNotExist: Could not import orgDisplay.views. Error was: No module named orgDisplay.views

但是当检查我的orgDisplay apps文件夹时,其中有一个view.py。我究竟做错了什么?我已经尝试通过建议django IRC房间将以下内容添加到我的settings.py中。

import sys
sys.path.append(r"/home/user/webapps/django_project/myproject/orgDisplay")

这是我的应用的路径。

关于如何开始麻烦拍摄这个的任何想法?

提前致谢。

4 个答案:

答案 0 :(得分:7)

我假设您正在使用mod_wsgi(由Django作者推荐),而不是mod_python。这是您应该使用sys.path的方式:

django.wsgi:

import os, sys
sys.path.append(r"/home/user/webapps/django_project/myproject/")
os.environ["DJANGO_SETTINGS_MODULE"] = "settings"

sys.stdout = sys.stderr # Prevent crashes upon print

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

urls.py:

from django.conf.urls.defaults import *
urlpatterns = (
   ("", include("orgDisplay.urls")),
   # ...
)

orgDisplay / urls.py:

import views

urlpatterns = ( 
    (r'^some_view/$', views.some_view), # It is actually orgDisplay.views.some_view
    # many more records ...
)

将项目目录本身添加到路径是一个坏主意,因为您在多个项目之间遇到名称冲突。

答案 1 :(得分:3)

我认为您将错误的目录附加到sys.path。我认为Python正在查找.../myproject/orgDisplay包的orgDisplay文件夹。尝试从字符串中删除orgDisplay,如下所示:

import sys
sys.path.append(r"/home/user/webapps/django_project/myproject")

另一种选择是在import语句中简单地添加myproject(或实际调用的任何项目)。

# instead of "from orgDisplay import views"
from myproject.orgDisplay import views

此外,请确保在每次编辑后重新启动Apache。

答案 2 :(得分:0)

查看manage.py,就像这样:

import sys

from os.path import abspath, dirname, join
from django.core.management import setup_environ


# setup the environment before we start accessing things in the settings.
setup_environ(settings_mod)

sys.path.insert(0, join(PINAX_ROOT, "apps"))
sys.path.insert(0, join(PROJECT_ROOT, "apps"))

答案 3 :(得分:0)

如果您的WSGI文件位于项目目录中,则可以采用稍微灵活的方式:

import os, sys
sys.path.append(os.path.dirname(__file__))

这使您可以在以后更改项目位置,而无需修改WSGI文件。