在 wsgi.py 中无法访问环境变量
Environment variable not accessible in wsgi.py
我想为我的 Django 项目的生产和开发环境使用不同的 settings.py
文件。为此,我在生产环境中永久添加了一个环境变量(DJANGO_ENV
),我正在加载不同的settings.py。但出于某种原因,wsgi.py[下面的代码] 没有访问环境变量,因此 if
条件失败。
import os
from django.core.wsgi import get_wsgi_application
if os.environ.get("DJANGO_ENV") == "PROD":
#*this condition is failing for some reason
os.environ['DJANGO_SETTINGS_MODULE']= 'myproject.settings_prod'
else:
os.environ['DJANGO_SETTINGS_MODULE']= 'myproject.settings'
application = get_wsgi_application()
如果我在终端上执行 echo $DJANGO_ENV
,我会得到“PROD
”作为响应,因此变量设置正确。
同样在 python shell 中,我可以访问 DJANGO_ENV
变量。
>>> import os
>>> os.environ.get("DJANGO_ENV")
'PROD'
我做错了什么?
我不得不 link gunicorn.service
中的环境变量,方法是将它们设置在如下所示的 .env 文件中。
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/myproj
EnvironmentFile=/home/ubuntu/myproj/.env
ExecStart=/home/ubuntu/myproj/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/myproj.sock myproj.wsgi:application
在我的 .env 中我设置了变量。
DJANGO_ENV="PROD"
我想为我的 Django 项目的生产和开发环境使用不同的 settings.py
文件。为此,我在生产环境中永久添加了一个环境变量(DJANGO_ENV
),我正在加载不同的settings.py。但出于某种原因,wsgi.py[下面的代码] 没有访问环境变量,因此 if
条件失败。
import os
from django.core.wsgi import get_wsgi_application
if os.environ.get("DJANGO_ENV") == "PROD":
#*this condition is failing for some reason
os.environ['DJANGO_SETTINGS_MODULE']= 'myproject.settings_prod'
else:
os.environ['DJANGO_SETTINGS_MODULE']= 'myproject.settings'
application = get_wsgi_application()
如果我在终端上执行 echo $DJANGO_ENV
,我会得到“PROD
”作为响应,因此变量设置正确。
同样在 python shell 中,我可以访问 DJANGO_ENV
变量。
>>> import os
>>> os.environ.get("DJANGO_ENV")
'PROD'
我做错了什么?
我不得不 link gunicorn.service
中的环境变量,方法是将它们设置在如下所示的 .env 文件中。
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/myproj
EnvironmentFile=/home/ubuntu/myproj/.env
ExecStart=/home/ubuntu/myproj/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/myproj.sock myproj.wsgi:application
在我的 .env 中我设置了变量。
DJANGO_ENV="PROD"