2011-09-29 2 views
10

Chcę zmienić zmienną środowiskową DJANGO_SETTINGS_MODULE w zależności od tego, co mówię dla Workon. Wydawało mi się, że chcę ustawić go w .virtualenvs/postmkvirtualenv, ale moja próba nie przyniosła efektu.Ustawienie DJANGO_SETTINGS_MODULE w virtualenv?

[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 

Czy ktoś mógłby mnie wyprostować; gdzie powinienem umieścić ten eksport?

Co więcej, czy przywróci po dezaktywacji? A jeśli nie, czy istnieje jakiś naturalny sposób na przywrócenie go?

+0

Możesz to zrobić: http://stackoverflow.com/questions/8826534/how-can-i-correctly-set-django-settings-module-for-my-django-project-i-am-using/ 22452281 # 22452281 – zzart

Odpowiedz

13

Byłaś na dobrej drodze, ale chcesz użyć zamiast haka postactivate z postmkvirtualenv.

Nie przywróci automatycznie po dezaktywacji. Na szczęście istnieje haczyk postdeactivate, za pomocą którego można ręcznie przywrócić zmienne środowiskowe zmienione przy aktywacji.

+0

Dziękuję (dla obu odbierających). Kluczem był "aktywuj", a ja tego wcześniej nie rozumiałem. –

+0

Czy hak postaktywny nie jest wspólny dla wszystkich środowisk? Myślę, że nie ma sensu ustawiać "DJANGO_SETTINGS_MODULE" tam. –

+4

Istnieje zarówno globalna, jak i lokalna wersja haka postaktywnego. W przypadku ustawienia lokalnego, takiego jak ten, należy dodać 'export' do' $ VIRTUAL_ENV/bin/postactivate' zamiast globalnego '$ VIRTUALENVWRAPPER_HOOK_DIR/postactivate'. – mmcnickle

19

Jednym ze sposobów Robiłem że przed dołączając oświadczenie eksportowej do końca ./bin/activate

export DJANGO_SETTINGS_MODULE="myproject.settings"