2011-09-29 8 views
10

Quiero que la variable de entorno DJANGO_SETTINGS_MODULE cambie dependiendo de lo que diga para workon. Me pareció que quería configurarlo en .virtualenvs/postmkvirtualenv pero mi versión de prueba no tuvo ningún efecto.Configurando DJANGO_SETTINGS_MODULE bajo 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 

¿Alguien podría haberme aclarado? ¿Dónde debería poner esa exportación?

Además, ¿se restablecerá cuando desactive? Y si no, ¿hay alguna forma natural de restaurarlo?

+0

Puede hacer esto: http://stackoverflow.com/questions/8826534/how-can-i-correctly-set-django-settings-module-for-my-django-project-i-am-using/ 22452281 # 22452281 – zzart

Respuesta

13

Usted estaba en el camino correcto, pero si desea utilizar el gancho en lugar postactivate de postmkvirtualenv.

No se restaurará automáticamente al desactivar. Afortunadamente hay un gancho postdeactivate que puede usar para restaurar manualmente cualquier variable del entorno que modificó al activar.

+0

Gracias (a ambos respondedores). La clave fue "activar", y no entendí eso antes. –

+0

¿No es el gancho postactivado común para todos los entornos? Creo que no hay mucho sentido de establecer 'DJANGO_SETTINGS_MODULE' allí. –

+4

Hay una versión global y local del gancho postactivado. Para una configuración de solo ubicación como esta, le recomendamos agregar 'export' a' $ VIRTUAL_ENV/bin/postactivate' en lugar de '$ VIRTUALENVWRAPPER_HOOK_DIR/postactivate' global. – mmcnickle

19

Una forma que lo he hecho antes es añadiendo una declaración de exportación hasta el final de ./bin/activate

export DJANGO_SETTINGS_MODULE="myproject.settings"