2014-11-06 116 views
0

一切都是之前的工作,但一下子Django無法找到設置?

python manage.py runserver 

拋出一個錯誤

line 41, in import_module 
return sys.modules[name] 
KeyError: 'settings.base' 

我的PYTHONPATH指着我的Django項目的根文件夾。

我manage.py是:

import os 
import sys 
if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.base") 

    from django.core.management import execute_from_command_line 

    execute_from_command_line(sys.argv) 

我有,我有base.py文件設置文件夾中。該文件拉入特定於環境的設置。

if os.getenv("PLATFORM") == "Heroku-Master": 
     from .heroku_master import * 
    elif os.getenv("PLATFORM") == "Heroku-Dev": 
     from .heroku_dev import * 
    elif os.getenv("PLATFORM") == "Heroku-Prod": 
     from .heroku_prod import * 
    else: 
     from .local import * 
except Exception as e: 
    pass 

可能是什麼問題?

+0

Errr ......那' settings.base'不存在。 – 2014-11-06 15:30:26

+0

我有一個設置文件夾裏有一個base.py文件的根目錄。 – akhil 2014-11-06 16:13:26

+1

你的設置文件夾是否有'__init __。py'?你的根文件夾在python路徑上嗎? – 2014-11-06 16:16:33

回答

0

您的文件名爲settings.py?

假設你的項目的根是/家/用戶名/工作區/ ProjectDjango,你有以下結構:

workspace 
    ProjectDjango 
     manage.py 
     YourAppFolder 
      settings.py 

你的配置應該是:

import os 
import sys 
if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "YourAppFolder.settings") 

    from django.core.management import execute_from_command_line 

    execute_from_command_line(sys.argv) 
+0

沒有我有一個文件夾調用設置。因爲我有一個base.py文件,它具有通用的「設置」,併爲本地/ dev/prod.try提供特定於環境的「設置」文件。往上看。 – akhil 2014-11-06 17:12:32

+0

因此它到達base.py if/else結構?如果是這樣,你是否測試了try/except塊是否成功讀取os.getenv(「PLATFORM」)? – 2014-11-07 03:13:57