2011-09-29 78 views
10

我希望環境變量DJANGO_SETTINGS_MODULE根據我說的workon而改變。在我看來,我想將其設置在.virtualenvs/postmkvirtualenv,但我的試用沒有效果。在virtualenv下設置DJANGO_SETTINGS_MODULE?

[email protected]:~$ cat ~/.virtualenvs/postmkvirtualenv 
#!/bin/bash 
# This hook is run after a new virtualenv is activated. 
export DJANGO_SETTINGS_MODULE=newproject.settings 
[email protected]:~$ echo $DJANGO_SETTINGS_MODULE 
az.settings 
[email protected]:~$ workon newproject 
(newproject)[email protected]:~$ echo $DJANGO_SETTINGS_MODULE 
az.settings 

有人可以讓我坐直;我應該在哪裏出口?

另外,當我停用時它會恢復嗎?如果沒有,是否有一些自然的方法來恢復它?

+0

您可以這樣做:http://stackoverflow.com/questions/8826534/how-can-i-correctly-set-django-settings-module-for-my-django-project-i-am-using/ 22452281#22452281 – zzart

回答

13

你在正確的軌道上結束,而是要使用postactivate掛鉤,而不是postmkvirtualenv

它不會在停用時自動恢復。謝天謝地,有postdeactivate鉤子,您可以使用它來手動恢復激活時更改的任何環境變量。

+0

謝謝(對兩位回答者)。關鍵是「激活」,我以前不明白。 –

+0

是不是所有環境都通用的postactivate鉤子?我認爲在那裏設置「DJANGO_SETTINGS_MODULE」沒有多大意義。 –

+4

有postactivate鉤子的全局和本地版本。對於像這樣的僅限於本地的設置,您希望將'export'添加到'$ VIRTUAL_ENV/bin/postactivate',而不是全局'$ VIRTUALENVWRAPPER_HOOK_DIR/postactivate'。 – mmcnickle

19

一種方法我已經做了,在通過追加出口語句的./bin/activate

export DJANGO_SETTINGS_MODULE="myproject.settings" 
相關問題