在virtualenv下设置DJANGO_SETTINGS_MODULE?

Jim*_*ron 12 django virtualenvwrapper

我希望环境变量DJANGO_SETTINGS_MODULE根据我对工作的说法而改变.在我看来,我想把它设置好,.virtualenvs/postmkvirtualenv但我的试验没有效果.

ftpmaint@millstone:~$ cat ~/.virtualenvs/postmkvirtualenv
#!/bin/bash
# This hook is run after a new virtualenv is activated.
export DJANGO_SETTINGS_MODULE=newproject.settings
ftpmaint@millstone:~$ echo $DJANGO_SETTINGS_MODULE
az.settings
ftpmaint@millstone:~$ workon newproject
(newproject)ftpmaint@millstone:~$ echo $DJANGO_SETTINGS_MODULE
az.settings
Run Code Online (Sandbox Code Playgroud)

有人会让我直截了当; 我应该把那个出口放在哪里?

另外,当我停用时它会恢复吗?如果没有,是否有一些自然的方法来恢复它?

Joe*_*e J 20

我以前做过的一种方法是在./bin/activate末尾附加一个导出语句

export DJANGO_SETTINGS_MODULE="myproject.settings"
Run Code Online (Sandbox Code Playgroud)


mmc*_*kle 14

你是在正确的轨道,但你想使用postactivate钩而不是postmkvirtualenv.

它在停用时不会自动恢复.值得庆幸的是postdeactivate,您可以使用钩子手动恢复在激活时更改的任何环境变量.

  • 有一个全局和本地版本的postactivate钩子.对于像这样的仅限本地的设置,您需要将`export`添加到`$ VIRTUAL_ENV/bin/postactivate`而不是全局`$ VIRTUALENVWRAPPER_HOOK_DIR/postactivate`. (4认同)