Django / Python - 无法使用os.environ.get获取环境变量

时间:2018-03-24 13:21:28

标签: python django linux ubuntu environment-variables

在我的Django项目中,我需要访问DJANGO_DEVELOPMENT环境变量,该变量告知它是开发服务器还是生产(DigitalOcean上的Droplet)。

我想在这个Droplet上设置DJANGO_DEVELOPMENT1,但它不起作用。

我已添加到/etc/environment这一行:

DJANGO_DEVELOPMENT="1"

重新启动整个Droplet。

然后,我尝试在settings.py

中记录此变量
if os.environ.get('DJANGO_DEVELOPMENT') == '1':
    logger.info('DJANGO_DEVELOPMENT=="1"')
    from dev_settings import *
else:
    logger.info('no DJANGO_DEVELOPMENT VAR')
    logger.info(os.environ.get('DJANGO_DEVELOPMENT'))
    logger.info(os.environ.items())

记录下来:

2018-03-24 13:09:43,007 - MyProject.settings - INFO - no DJANGO_DEVELOPMENT VAR
2018-03-24 13:09:43,007 - MyProject.settings - INFO - None
2018-03-24 13:09:43,014 - MyProject.settings - INFO - [('LANG', 'en_US.UTF-8'), ('SUPERVISOR_SERVER_URL', 'unix:///var/run/supervisor.sock'), ('SUPERVISOR_ENABLED', '1'), ('SUPERVISOR_PROCESS_NAME', 'daphne'), ('DJANGO_SETTINGS_MODULE', 'MyProject.settings'), ('SUPERVISOR_GROUP_NAME', 'daphne'), ('PATH', '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'), ('LC_ALL', 'en_US.UTF-8')]

但当我ssh到Droplet并手动检查变量时,似乎设置了:

root@MyProject-v1:~# echo $DJANGO_DEVELOPMENT 
1
root@MyProject-v1:~# su - futilestudio 
futilestudio@MyProject-v1:~$ echo $DJANGO_DEVELOPMENT 
1
futilestudio@MyProject-v1:~$ 

不知道问题出在哪里,不是一个错误吗?

2 个答案:

答案 0 :(得分:0)

尝试也写

export DJANGO_DEVELOPMENT="1"
<{1>}或/etc/environment

中的

答案 1 :(得分:0)

对于工作Django收到DJANGO_SETTINGS_MODULE环境变量。以同样的方式传递你的变量。

P.S。通过传递环境变量来配置开发/生产状态并不是一个好办法,对不同的状态使用不同的设置模块。