Python & Django EROOR–ImportError: Settings cannot be imported, because environment variab

來源:互聯網
上載者:User
>>>from django.db import connection
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/__init__.py", line 14, in <module>
if not settings.DATABASES:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/conf/__init__.py", line 40, in _setup
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
使用Django時在命令列中敲擊Python命令進入互動模式,如果直接如下操作:
>>>from django.db import connection
>>>from django.template import  Template ,Contextt  = Template(”Test is {{test}}”) 

會導致: 
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined. 
原因是django的配置資訊沒有初始化。
解決方案有兩種:
  1. 切換到Project或者APP所在的目錄使用manage.py shell(或者python manage.py shell)命令啟動互動視窗;
  2. 手動將django的配置初始化:from django.conf import settingssettings.configure() 
原理(來源http://djangobook.py3k.cn/2.0/chapter04/): 

如果你曾經使用過Python,你一定好奇,為什麼我們運行python manage.py shell而不是python。這兩個命令都會啟動互動解譯器,但是manage.py shell命令有一個重要的不同: 在啟動解譯器之前,它告訴Django使用哪個設定檔案。 Django架構的大部分子系統,包括模板系統,都依賴於設定檔;如果Django不知道使用哪個設定檔,這些系統將不能工作。 

如果你想知道,這裡將向你解釋它背後是如何工作的。 Django搜尋DJANGO_SETTINGS_MODULE環境變數,它被設定在settings.py中。例如,假設mysite在你的 Python搜尋路徑中,那麼DJANGO_SETTINGS_MODULE應該被設定為:’mysite.settings’。 

當你運行命令:python manage.py shell,它將自動幫你處理DJANGO_SETTINGS_MODULE。 在當前的這些樣本中,我們鼓勵你使用`` python manage.py shell``這個方法,這樣可以免去你大費周章地去配置那些你不熟悉的環境變數。 

隨著你越來越熟悉Django,你可能會偏向於廢棄使用`` manage.py shell`` ,而是在你的設定檔.bash_profile中手動添加 DJANGO_SETTINGS_MODULE這個環境變數。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.