2009-10-29 162 views
20

我有一個從應用程序導入models.py的腳本,但它不會導入! 我不相信我應該手動創建一個「導出DJANGO ...」環境變量......我正在做其他的錯誤。爲什麼我在Django中出現這個錯誤?

Traceback (most recent call last): 
     File "parse.py", line 8, in ? 
     from butterfly.flower.models import Channel, Item 
     File "/home/user/shri/butterfly/flower/models.py", line 1, in ? 
     from django.db import models 
     File "/usr/lib/python2.4/site-packages/django/db/__init__.py", line 10, in ? 
     if not settings.DATABASE_ENGINE: 
     File "/usr/lib/python2.4/site-packages/django/utils/functional.py", line 269, in __getattr__ 
     self._setup() 
     File "/usr/lib/python2.4/site-packages/django/conf/__init__.py", line 38, 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. 

回答

16

我不認爲我應該 手動創建一個 「出口DJANGO ......」 環境變量...

手動或以其他方式,你咋辦以確保變量在導入Django模型文件之前處於環境中 - 不確定導致您懷疑的原因是什麼,但無論它們是什麼,該懷疑都沒有根據。

+0

感謝。那麼,在設置一個Django項目之後,是否有必要設置2個環境變量? -DJANGO_SETTINGS_MODULE -PYTHONPATH ..加上項目路徑。 – TIMEX

+9

大聲笑,我認爲你從字面上看「我不相信」。 – hasen

+1

@hasen,猜我對任何名叫「alex」的人都有很高的期望;-)。 –

38

您需要正確導入您的設置文件。如果您不先導入django環境變量,則導入將失敗,正如您注意到的那樣。你需要什麼樣的代碼:

 
import os 

# Set the DJANGO_SETTINGS_MODULE environment variable. 
os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings" 

#do your stuff 

+0

感謝分享 – Prabu

+0

還應該注意的是,在您從項目中進行任何其他導入之前,必須執行此命令。 –

6

的一種替代方法擺弄環境,就是隻寫你的腳本作爲Django custom management command,它負責爲你設置環境的(連同其他像選項解析等)。

15

從命令行運行「python manage.py shell」應該包含適合您的設置併爲您提供python提示。

0

從命令行執行該命令。這可以幫助你:

export DJANGO_SETTINGS_MODULE=projectname.settings 
0

我有這種類似的錯誤,我意識到,我忘了創建的應用程序文件夾中的文件「初始化 py」爲:

myapp: 
    manage.py 
    myapp: 
     __init__.py 
     settings.py 
     .... 
相關問題