2013-06-24 34 views
1

我正在開發一個django項目,並且我有一個名爲runthis.py的獨立腳本。這個腳本處理數據庫中的數據,所以它調用了很多django Model類。像從Model.models導入模型一樣。但要在獨立腳本中執行此操作,必須使用導出DJANGO_SETTINGS_MODULE = App.settings設置DJANGO_SETTINGS_MODULE env變量。這很容易在終端做,但我想將它在腳本本身...試圖在需要它的python腳本中定義DJANGO_SETTINGS_MODULE時的問題

這裏是我的代碼:

# runthis.py 
import os 
os.system("export DJANGO_SETTINGS_MODULE=App.settings") 
from Model.models import Model # AN ERROR HAPPENS HERE 

這裏是我的錯誤:

django.core.exceptions.ImproperlyConfigured:請求的設置 DATABASES,但設置未配置。在訪問設置之前,您必須定義 環境變量DJANGO_SETTINGS_MODULE或調用 settings.configure()。

任何提示?這背後的想法是,runthis.py腳本需要在cron工作上。我不知道如何在crontab -e中導出env變量,所以我只是想方便地將它放入.py腳本本身。

任何建議將是驚人的,謝謝。

+2

你看看寫一個[自定義管理命令](https://docs.djangoproject.com/en/dev/howto/custom-management-commands/)。 「自定義管理命令對於運行獨立腳本或從UNIX crontab或Windows計劃任務控制面板定期執行的腳本特別有用。」 –

回答

4

使用os.system創建單獨的子shell。您設置了環境,但之後立即消失,因爲在運行一個命令後shell會退出。嘗試使用os.environ。 (我對Django知之甚少,無法知道這是否會起作用;您可能需要在啓動Python進程之前真正設置環境變量。)

此外,錯誤消息建議將settings.configure作爲替代。你嘗試過嗎?

+0

現在就試試他們,謝謝 –