2010-03-25 100 views
6

有人可以給我一個指針,爲什麼我需要將我的項目根路徑添加到python路徑以及我的WSGI文件中的應用程序本身?Django sys.path.append項目*和*應用程序需要在WSGI

項目庫被稱爲'djapp',該應用程序被稱爲'myapp'。

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../djapp') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'djapp.settings' 

如果我省略了「/../djapp/」日誌告訴我說「MYAPP」不能導入行,即使「djapp.settings」的。 (驗證'djapp'已導入)

它通過./manage.py命令正常運行。項目文件夾中有一個__init__

對於testings起見,我看到使用addsitedir同一個問題:你的項目,該項目正在做from myapp import foo

site.addsitedir('/home/user/web/project/') 
site.addsitedir('/home/user/web/project/djapp') 

回答

4

由於djapp(Django的項目文件夾)中也屬於我改名爲djapp文件夾只是project部署父文件夾。 那麼這個代碼是總是正確:

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../project') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' 

完整的文件夾佈局之中:

host.example.com\ 
    etc\ 
    bin\ 
    project\ 
    logs\ 

和你有什麼。這種方式項目總是可以稱爲項目:)

希望有所幫助。

GrtzG

3

想必你已經有了代碼。

兩個選項:

  • 變化,要from djapp.myapp import foo,這是不推薦的,因爲它防止可移植性;
  • 只在您的WSGI中添加djapp,並將DJANGO_SETTINGS_MODULE設置爲'settings'
+0

嗨,丹尼爾,thanx的反饋。已經嘗試過第二種選擇,但是它抱怨導入'djapp.urls' – GerardJP 2010-03-25 13:37:19

相關問題