2009-11-01 96 views
2

我有一個在本地機器上的開發服務器上設置了一個小概念驗證概念。我現在試圖將它移到生產服務器上的django上,我使用的是webfaction。不過,現在我是從內置的Django的服務器切換到Apache我得到如下:無法導入/沒有名爲Django的模塊錯誤與Apache

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

但檢查時,我orgDisplay apps文件夾中有它view.py。我究竟做錯了什麼?我已經嘗試通過django IRC room的建議將以下內容添加到我的settings.py中。

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

這是我的應用程序的路徑。

關於如何甚至開始麻煩拍攝這個任何想法?

在此先感謝。

回答

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 ... 
) 

將項目目錄本身添加到路徑是一個糟糕的主意,因爲您會在多個項目之間發生名稱衝突。

+0

我相信如果我添加了可能會修復它的導入orgDisplay.views。那麼我將它添加到我的urls.py文件中?看起來很奇怪,我不得不在這樣的環境中閒逛。 – 2009-11-01 13:13:32

+0

用完整的urlconf設置更新了我的答案 – 2009-11-01 20:12:09

3

我想你是錯誤的目錄追加到sys.path。我認爲Python正在尋找orgDisplay包的.../myproject/orgDisplay文件夾。嘗試從您的字符串取出orgDisplay,就像這樣:

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

另一種選擇是簡單地添加myproject(或任何你的項目實際上是所謂的),在import語句。

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

此外,請確保在每次編輯後重新啓動Apache。

+0

我沒有看到你的append語句和我的區別。 此外,我會在哪裏添加導入語句。在我的urls.py文件中?那就是我從中調用的地方。 – 2009-11-01 13:24:22

+0

我從myproject.orgDisplay中添加了導入視圖到我的urls.py文件,仍然沒有運氣。 – 2009-11-01 13:58:56

+0

我的錯誤。我直接複製了您的代碼,並忘記進行更改。現在修復。 – 2009-11-01 20:35:01

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")) 
0

前提是你的WSGI文件在您的項目目錄,一個稍微更靈活的方式是這樣的:

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

這將使您可以稍後更改項目位置,而無需修改WSGI文件。

相關問題