在 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"